BRPI0406404B1 - A system for supporting a transacted remote file operation between a local device and a remote device, and a method for implementing a transacted remote file operation on a local device - Google Patents

A system for supporting a transacted remote file operation between a local device and a remote device, and a method for implementing a transacted remote file operation on a local device Download PDF

Info

Publication number
BRPI0406404B1
BRPI0406404B1 BRPI0406404B1 BR PI0406404 B1 BRPI0406404 B1 BR PI0406404B1 BR PI0406404 B1 BRPI0406404 B1 BR PI0406404B1
Authority
BR
Brazil
Prior art keywords
transaction
request
server
file
notification
Prior art date
Application number
Other languages
Portuguese (pt)
Publication date

Links

Description

Relatório Descritivo da Patente de Invenção para "SISTEMA PARA SUPORTAR OPERAÇÕES DE ARQUIVO REMOTO TRANSACIONADAS ENTRE UM DISPOSITIVO LOCAL E UM DISPOSITIVO REMOTO, E MÉTODO PARA IMPLEMENTAR UMA OPERAÇÃO DE ARQUIVO REMOTO TRANSACIONADA EM UM DISPOSITIVO LOCAL”.Report of the Invention Patent for "SYSTEM TO SUPPORT TRANSACTED REMOTE FILE OPERATIONS BETWEEN A LOCAL DEVICE AND A REMOTE DEVICE AND METHOD FOR IMPLEMENTING A REMOTE FILE OPERATION TRANSACTED ON A LOCAL DEVICE".

CAMPO TÉCNICOTECHNICAL FIELD

[001] Várias modalidades descritas abaixo se relacionam geralmente com a comunicação de rede e, mais particularmente porém não exclusivamente com métodos e sistemas para permitir operações de arquivo transacionadas através de uma rede.[001] Several embodiments described below generally relate to network communication, and more particularly but not exclusively to methods and systems for allowing transacted file operations over a network.

FUNDAMENTO DA INVENÇÃOBACKGROUND OF THE INVENTION

[002] Há muito tempo as transações tem sido proporcionadas por bases de dados e sistemas de processamento de transação. As transações proporcionam um modelo de falha simplificado, desejável para programadores de aplicação, por agrupar uma série de operações em uma única operação atômica, isto é, um grupo de operações cujos resultados das operações individuais se mantém ou caem juntos. Se somente uma operação falhar, os efeitos de todas as operações no grupo, independente do número de operações associadas com a transação, são "desfeitos" ou revertidos. Esta solidariedade entre as operações é proporcionada com respeito à qualquer número de falhas e eventual mente o sistema de processamento de transação respectivo alcança um de dois estados por meio dos quais todas as operações foram aplicadas ou nenhuma das aplicações foram aplicadas. SUMÁRIO DA INVENÇÃOTransactions have long been provided by databases and transaction processing systems. Transactions provide a simplified failure model desirable for application programmers by grouping a series of operations into a single atomic operation, that is, a group of operations whose results of individual operations stand or fall together. If only one operation fails, the effects of all operations in the group, regardless of the number of operations associated with the transaction, are "undone" or reversed. This solidarity between operations is provided with respect to any number of failures and eventually the respective transaction processing system achieves one of two states whereby all operations were applied or none of the applications were applied. SUMMARY OF THE INVENTION

[003] De acordo com aspectos das várias modalidades descritas, são proporcionados um método e sistema para transacionar operações de arquivo através de uma rede. Em um aspecto, uma plataforma de computação (isto é, cliente) pode remotamente acessar um arquivo em outra plataforma de computação (isto é, servidor) via a rede. Neste aspecto, cada um dentre o cliente e o servidor inclui um gerenciador de transação (TM) e um sistema de arquivo (FS). O cliente também inclui um redirecionador (RDR), enquanto o servidor inclui um componente de servidor (SRV).According to aspects of the various embodiments described, there is provided a method and system for transacting archive operations over a network. In one aspect, a computing platform (ie client) can remotely access a file on another computing platform (ie server) via the network. In this regard, each of the client and server includes a transaction manager (TM) and a file system (FS). The client also includes a redirector (RDR), while the server includes a server component (SRV).

[004] Em operação, o RDR recebe uma requisição para uma operação de arquivo transacionada remota. Em resposta à requisição, o RDR examina procura a transação a partir da requisição e tem a transação conduzida para transmissão para o servidor (por exemplo, o TM em uma modalidade). O RDR então envia a informação de transação (por exemplo, uma bolha de condução em uma modalidade) para o servidor através da rede. O SRV recebe a informação de transação, a qual o TM e o FS do servidor então utilizam para executar a operação de arquivo. O servidor então retorna o resultado da operação de arquivo para o cliente via a rede.[004] In operation, RDR receives a request for a remote transacted file operation. In response to the request, the RDR examines looks for the transaction from the request and has the transaction conducted for transmission to the server (for example, the TM in one mode). The RDR then sends the transaction information (for example, a driving bubble in one mode) to the server over the network. The SRV receives transaction information, which the server's TM and FS then use to perform the archive operation. The server then returns the result of the file operation to the client via the network.

[005] Em outro aspecto, o RDR permite que mais do que uma transação de operação de arquivo remoto seja aberta para um arquivo. Quando o RDR recebe uma nova requisição para uma operação de arquivo remoto transacionada, o RDR determina se uma versão "suja" do arquivo remoto (isto é, uma versão que foi gravada) é conhecida no cliente. O RDR então utiliza a versão suja para a nova requisição ao invés da versão original do arquivo. Em algumas modalidades, o RDR somente permite que uma única operação de gravação transacionada seja aberta ao mesmo tempo para um dado arquivo.[005] In another aspect, RDR allows more than one remote file operation transaction to be opened for a file. When RDR receives a new request for a transacted remote file operation, RDR determines if a "dirty" version of the remote file (that is, a recorded version) is known to the client. RDR then uses the dirty version for the new request instead of the original version of the file. In some embodiments, RDR only allows a single transactional write operation to be opened at the same time for a given file.

[006] Ainda em outro aspecto, o RDR determina se uma nova requisição para uma operação de arquivo remoto transacionada pode utilizar informações de arquivo já conhecidas no cliente. Se a mesma informação de arquivo puder ser utilizada, o RDR utiliza esta mesma informação de arquivo ao invés de armazenar outra cópia da informação de arquivo.In yet another aspect, RDR determines whether a new request for a transacted remote archive operation can use archive information already known to the client. If the same file information can be used, RDR uses this same file information instead of storing another copy of the file information.

[007] Ainda em um aspecto adicional, o RDR pode associar um bloqueio oportunistico com transações para um dado arquivo remoto. Em uma modalidade, o bloqueio não impede o servidor local de acessar o arquivo, porém causa que o servidor envie uma mensagem para o cliente de que o bloqueio foi rompido. O RDR pode então verificar se um bloqueio foi rompido para um dado arquivo por determinar se uma nova requisição para um arquivo remoto transacionado pode utilizar informações de arquivo já armazenadas em memória cache no cliente. BREVE DESCRIÇÃO DOS DESENHOSIn yet another aspect, RDR may associate an opportunistic lock with transactions for a given remote file. In one embodiment, the lock does not prevent the local server from accessing the file, but causes the server to send a message to the client that the lock has been broken. RDR can then check whether a lock has been broken for a given file by determining whether a new request for a transacted remote file can use file information already cached on the client. BRIEF DESCRIPTION OF DRAWINGS

[008] Modalidades não limitativas e não exaustivas são descritas com referência às seguintes figuras, onde números de referência iguais se referem á partes iguais por todas as várias vistas a menos que seja de outro modo especificado.Non-limiting and non-exhaustive embodiments are described with reference to the following figures, where like reference numerals refer to like portions throughout the various views unless otherwise specified.

[009] A FIG. 1 apresenta um exemplo de um sistema capaz de utilizar as operações de arquivo remoto transacionadas;[009] FIG. 1 presents an example of a system capable of utilizing transacted remote archive operations;

[0010] A FIG. 2 apresenta um exemplo de componentes de um cliente de um servidor do sistema da FIG. 1;FIG. 2 shows an example of components of a client of a system server of FIG. 1;

[0011] As FIGS. 3 e 3A apresentam fluxos de processamento ilustrativos para uma operação de arquivo remoto transacionada entre o cliente e o servidor da FIG. 2;FIGS. 3 and 3A show illustrative processing streams for a remote file operation transacted between the client and server of FIG. 2;

[0012] A FIG. 4 apresenta um exemplo de vários acessos ao arquivo remoto pelo cliente e pelo servidor da FIG. 2;FIG. 4 shows an example of various remote file accesses by the client and server of FIG. 2;

[0013] A FIG. 5 apresenta um fluxo de processamento ilustrativo para executar uma entrega de duas fases de uma transação através de uma rede;FIG. 5 shows an illustrative processing flow for performing a two-phase delivery of a transaction over a network;

[0014] A FIG. 6 apresenta um exemplo de componentes para implementar o gerenciamento de transação;FIG. 6 presents an example of components for implementing transaction management;

[0015] A FIG. 7 apresenta um fluxo de processamento ilustrativo para transações de nível núcleo;FIG. 7 shows an illustrative processing flow for core level transactions;

[0016] A FIG. 8 apresenta um exemplo de uma característica de segurança; e [0017] A FIG. 9 apresenta um ambiente de computador geral que pode ser utilizado para implementar técnicas descritas aqui dentro, de acordo com várias modalidades. DESCRICÃO DETALHADA DA MODALIDADE PREFERIDA Ambiente de rede ilustrativo [0018] Como anterior mente descrito, as transações tem sido utilizadas em sistemas de processamento de transação e de base de dados, porém nas seguintes modalidades as transações são utilizadas para operações de arquivo remoto. A FIG. 1 ilustra um sistema 100 no qual um cliente pode transacionar operações de arquivo em um cliente via uma rede 101. No ambiente de rede ilustrativo da FIG. 1, vários dispositivos de computação cliente 105, 110, 115 e 120, os quais também podem ser referidos como dispositivos cliente, estão acoplados com pelo menos um dispositivo servidor 125 via a rede 101. A rede 101 é pretendida para representar qualquer uma dentre uma variedade de topologias e tipos de rede convencionais, os quais podem incluir redes com fios / sem fios. A rede 101 pode adicional mente utilizar qualquer um dentre uma variedade de protocolos de rede convencionais, incluindo protocolos públicos e / ou proprietários. A rede 101 pode incluir, por exemplo, a Internet bem como possivelmente pelo menos partes de uma ou mais redes de área local (LANs), de redes de área ampla (WANs), etc.FIG. 8 shows an example of a security feature; and FIG. 9 depicts a general computer environment that can be used to implement techniques described herein according to various embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT Illustrative Network Environment As previously described, transactions have been used in transaction processing and database systems, but in the following embodiments transactions are used for remote file operations. FIG. 1 illustrates a system 100 in which a client may transact file operations on a client via a network 101. In the illustrative network environment of FIG. 1, several client computing devices 105, 110, 115, and 120, which may also be referred to as client devices, are coupled with at least one server device 125 via network 101. Network 101 is intended to represent any one of these. variety of conventional topologies and network types, which may include wired / wireless networks. Network 101 may further utilize any of a variety of conventional network protocols, including public and / or proprietary protocols. Network 101 may include, for example, the Internet as well as possibly at least parts of one or more local area networks (LANs), wide area networks (WANs), and so forth.

[0019] O dispositivo cliente 105 pode incluir qualquer um dentre uma variedade de dispositivos de computação convencionais, incluindo, mas não limitados à um computador pessoal de área de trabalho (PC), estações de trabalho, computadores de grande porte, dispositivos da Internet e consoles de jogo. Os dispositivos cliente adicionais associados com a rede 101 podem incluir o assistente digital pessoal (PDA) 110, computador laptop 115 e o telefone celular 120, etc., os quais podem estar em comunicação com a rede 101 por uma ligação com fios e / ou sem fios. Ainda adicionalmente, um ou mais dentre os dispositivos clientes 105, 110, 115 e 120 podem incluir os mesmos tipos de dispositivos, ou de forma alternativa diferentes tipos de dispositivos.Client device 105 may include any of a variety of conventional computing devices, including, but not limited to, a desktop personal computer (PC), workstations, large computers, Internet devices, and Game consoles. Additional client devices associated with network 101 may include personal digital assistant (PDA) 110, laptop computer 115 and mobile phone 120, etc., which may be in communication with network 101 by a wired connection and / or wireless. Still further, one or more of client devices 105, 110, 115 and 120 may include the same device types, or alternatively different device types.

[0020] O dispositivo servidor 125 pode proporcionar qualquer um dentre uma variedade de dados e / ou de funcionalidade para os dispositivos de computação 105, 110, 115 e 120. Os dados podem ser publicamente disponíveis ou de forma alternativa restritos, por exemplo, restritos à somente certos usuários ou disponíveis somente se uma taxa apropriada for paga, etc.Server device 125 may provide any of a variety of data and / or functionality for computing devices 105, 110, 115, and 120. Data may be publicly available or alternatively restricted, for example restricted. only certain users or available only if an appropriate fee is paid, etc.

[0021] O dispositivo servidor 125 é pelo menos um dentre um servidor da rede e um servidor de aplicação, ou uma combinação de ambos. O dispositivo servidor 125 é qualquer dispositivo que seja a fonte de conteúdo e os dispositivos clientes 105, 110, 115 e 120 incluem quaisquer dispositivos que recebem tal conteúdo. Portanto, em uma rede não hierárquica, o dispositivo que é a fonte do conteúdo é referido como o dispositivo servidor e o dispositivo que recebe o conteúdo é referido como o dispositivo cliente. Ambos os tipos de dispositivos estão aptos a carregarem e executarem programas de software, incluindo sistemas operacionais e aplicações, de acordo com as modalidades ilustrativas descritas aqui dentro. Adicionalmente, os dados e a funcionalidade podem ser compartilhados entre os dispositivos clientes 105, 110, 115 e 120. Isto é, o dispositivo de serviço 125 não é a única fonte de dados e / ou de funcionalidade para os respectivos dispositivos clientes.Server device 125 is at least one of a network server and an application server, or a combination of both. Server device 125 is any device that is the content source, and client devices 105, 110, 115, and 120 include any devices that receive such content. Therefore, in a nonhierarchical network, the device that is the source of the content is referred to as the server device and the device that receives the content is referred to as the client device. Both types of devices are capable of loading and running software programs, including operating systems and applications, in accordance with the illustrative embodiments described herein. Additionally, data and functionality may be shared between client devices 105, 110, 115 and 120. That is, service device 125 is not the sole source of data and / or functionality for respective client devices.

[0022] Na fonte de dados 130 ou 135, os programas de software, incluindo sistemas operacionais e aplicações, são preparados e / ou proporcionados para qualquer um do dispositivo servidor 125 ou dos dispositivos clientes 105, 110, 115 e 120 para execução. Para o propó- sito de consistência, a discussão aqui dentro posteriormente se refere à "aplicações" que abrangem qualquer um dentre, pelo menos, programas de software, sistemas operacionais e aplicações, tanto de forma singular como em combinação, como conhecido na técnica. Adicionalmente, as aplicações são disseminadas para o dispositivo servidor 125 tanto off-line tal como a partir da fonte de dados 130 como on-line tal como a partir da fonte de dados 135. Ainda adicionalmente, as aplicações são tipicamente disseminadas para os dispositivos clientes 105, 110, 115 e 120 on-line a partir do dispositivo servidor 125 ou da fonte de dados 135. Dispositivos e métodos para disseminação off-line das mesmas também são conhecidos.At data source 130 or 135, software programs, including operating systems and applications, are prepared and / or provided for either server device 125 or client devices 105, 110, 115 and 120 for execution. For the sake of consistency, the discussion hereinafter later refers to "applications" that encompass any of at least software programs, operating systems, and applications, either singularly or in combination, as known in the art. Additionally, applications are disseminated to server device 125 both offline as from data source 130 and online as from data source 135. Still further, applications are typically disseminated to client devices. 105, 110, 115 and 120 online from server device 125 or data source 135. Devices and methods for offline dissemination thereof are also known.

[0023] De acordo com várias modalidades descritas abaixo, a disseminação de pelo menos um dentre os dados e a funcionalidade entre os dispositivos 105, 110, 115, 120 e 125 pode ser implementada como uma transação. Mais particularmente, uma transação é um grupo de operações que são executadas de forma síncrona ou de forma assín-crona como uma única operação atômica, tanto dentro dos dispositivos 105, 110, 115, 120 e 125 como em um ambiente de rede, tal como o exemplo da FIG. 1. Um exemplo das operações de arquivo remoto transacionadas executadas através da rede é descrito em maiores detalhes abaixo em conjunto com as FIGs. 2 até 7.According to various embodiments described below, the dissemination of at least one of the data and functionality between devices 105, 110, 115, 120 and 125 may be implemented as a transaction. More particularly, a transaction is a group of operations that are performed synchronously or asynchronously as a single atomic operation, both within devices 105, 110, 115, 120, and 125 as in a network environment such as the example of FIG. 1. An example of the transacted remote file operations performed over the network is described in more detail below in conjunction with FIGs. 2 to 7.

[0024] Operação de arquivo remoto transacionada [0025] A FIG. 2 ilustra componentes de dois dispositivos do sistema 100 (por exemplo, selecionados a partir dos dispositivos 105, 110, 115, 120 e 125) da FIG. 1 que estão operando como um cliente 202 e um servidor 204 para propósitos de uma operação de arquivo remoto transacionada. Nesta modalidade, tanto o cliente 202 como o servidor 204 utilizam uma versão do sistema operacional Microsoft® Windows®. Em outras modalidades, diferentes sistemas operacionais podem ser utilizados.Transacted remote file operation [0025] FIG. 2 illustrates components of two system devices 100 (e.g., selected from devices 105, 110, 115, 120, and 125) of FIG. 1 which are operating as a client 202 and a server 204 for the purposes of a transacted remote file operation. In this embodiment, both client 202 and server 204 use a version of the Microsoft® Windows® operating system. In other embodiments, different operating systems may be used.

[0026] Nesta modalidade, o cliente 202 inclui uma aplicação 212, um gerenciador de entrada / saída (E/S) 214, um sistema de arquivos (FS) 216, um seletor redirecionador 218, um gerenciador de transação (TM) 222 e um redirecionador (RDR) 220. O servidor 204, nesta modalidade, inclui um componente servidor (SRV) 234, um gerenciador de E/S 214A, um FS 216A e um TM 222A. Nesta modalidade, o cliente 202 e o servidor 204 podem se comunicar um com o outro via a rede 100 (FIG. 1). Em algumas modalidades, estes componentes são implementados por software.In this embodiment, client 202 includes an application 212, an input / output (I / O) manager 214, a file system (FS) 216, a redirector selector 218, a transaction manager (TM) 222, and a redirector (RDR) 220. Server 204 in this embodiment includes a server (SRV) component 234, an I / O manager 214A, an FS 216A, and a TM 222A. In this embodiment, client 202 and server 204 can communicate with each other via network 100 (FIG. 1). In some embodiments, these components are implemented by software.

[0027] Nesta modalidade "Windows", os gerenciadores de E/S 214 e 214A, os FSs 216 e 216A são implementados pelo sistema de arquivos NT (NTFS) e o seletor redirecionador 218 é implementado pelo provedor UNC múltiplo (MUP), onde o UNC é uma acrossemia para Convenção de Nomenclatura Uniforme. Assim, o seletor redirecionador 218 também é referido aqui dentro como MUP 218. Em adição, o RDR e o SRV do sistema operacional Microsoft® Windows® (com funcionalidade adicionada) implementam o RDR 220 e o SVR 234, respectivamente. Adições ilustrativas ao RDR e ao SVR do sistema operacional Microsoft® Windows® são descritas abaixo. Ainda adicionalmente, nesta modalidade, o TM 222 e o TM 222A são implementados como gerenciadores de transação de nível núcleo nesta modalidade ilustrativa e são descritos abaixo em maiores detalhes. Outras modalidades podem utilizar diferentes gerenciadores de E/S, sistemas de arquivos, seletores redirecionadores, TMs e / ou RDRs.In this "Windows" mode, I / O managers 214 and 214A, FSs 216 and 216A are implemented by NT file system (NTFS) and redirector selector 218 is implemented by multiple UNC provider (MUP), where The UNC is an acrosemia for Uniform Naming Convention. Thus, the redirector selector 218 is also referred to herein as MUP 218. In addition, Microsoft® Windows® operating system RDR and SRV (with added functionality) implement RDR 220 and SVR 234, respectively. Illustrative additions to the Microsoft® Windows® operating system RDR and SVR are described below. Still further, in this embodiment, TM 222 and TM 222A are implemented as core level transaction managers in this illustrative embodiment and are described in more detail below. Other modalities may use different I / O managers, file systems, redirector selectors, TMs, and / or RDRs.

[0028] A FIG. 3 ilustra um fluxo de processamento ilustrativo para uma operação de arquivo remoto transacionada entre o cliente 202 e o servidor 204 (FIG. 2). Referindo-se às FIGs. 2 e 3, uma operação de arquivo remoto transacionada é executada como se segue, de acordo com uma modalidade.FIG. 3 illustrates an illustrative processing flow for a remote file operation transacted between client 202 and server 204 (FIG. 2). Referring to FIGs. 2 and 3, a transacted remote file operation is performed as follows according to one embodiment.

[0029] Em um bloco 302, o RDR 220 recebe uma requisição pela operação de arquivo transacionada em um arquivo residindo no servidor 204. As operações de arquivo típicas incluem criar um novo arquivo, ler um arquivo, gravar um arquivo, copiar um arquivo, renomear um arquivo, etc. Nesta modalidade, a requisição por uma operação de arquivo transacionada é gerada pela aplicação 212, a qual é uma aplicação de nível do usuário como apresentado na FIG. 2. A requisição utiliza uma estrutura que inclui um campo para o contexto de transação. A requisição é recebida pelo gerenciador de E/S 214, o qual determina se a requisição é para um arquivo local ou para um arquivo remoto. Nesta modalidade, o gerenciador de E/S 214 é um componente padrão do sistema operacional Microsoft® Windows®, Por exemplo, a aplicação 212 pode fazer a requisição via uma chamada para o gerenciador de E/S 214 com o nome UNC (o qual está na forma de Wserver\share\subdirectorv\filenameV O gerenciador de E/S 214 então passa a requisição para o MUP 218. Podem existir vários identificadores para uma transação e várias transações para um dado arquivo. Por outro lado, se a requisição fosse para um arquivo no cliente, o gerenciador de E/S 214 passaria a requisição para o NTFS 216 do modo padrão, [0030] O MUP 218 então localiza o redirecionador necessário para executar a requisição. Neste caso, o redirecionador é RDR 220. Nesta modalidade, o MUP 218 é um componente padrão do sistema operacional Microsoft® Windows®. Nesta modalidade, o RDR 220 é uma versão do RDR do sistema operacional Microsoft® Windows®, com adições de modo que o RDR possa interagir com o TM 222 para executar transações. As adições incluem, por exemplo, a capacidade de recuperar contextos de transação para operações de arquivo transacionadas a partir de requisições, designar blocos de controle de arquivo (FCBs) para operações de arquivo transacionadas, enviar transações para dispositivos remotos através da rede, receber respostas para as ope- rações de arquivo transacionadas (incluindo identificadores de Arquivo e identificadores de versão), executar operações de transação sob a direção do TM 222 e funcionar como um gerenciador de recurso com o TM 222 de modo que o RDR 220 possa se manter informado com respeito ao estado de uma transação. Em algumas modalidades, o RDR 220 é implementado como descrito no Pedido de Patente US copen-dente comumente designado Ne 09/539.233, depositado em 30 de Março de 2000, entitulado "Transactional File System" e no Pedido Ne [Processo N- MS1-1781US]. O funcionamento como um gerente de recurso é descrito abaixo. O RDR 220 contém recursos para colocação em memória intermediária da transação, mapa de memória cache, blocos de controle de arquivo (FCBs), extensões de objeto de arquivo (FOBXs) e outras estruturas necessárias para processar a transação e a requisição.In block 302, RDR 220 receives a request for the file transaction transacted on a file residing on server 204. Typical file operations include creating a new file, reading a file, writing a file, copying a file, rename a file, etc. In this embodiment, the request for a transacted file operation is generated by application 212, which is a user-level application as shown in FIG. 2. The request uses a structure that includes a field for the transaction context. The request is received by the I / O manager 214, which determines whether the request is for a local file or for a remote file. In this mode, I / O manager 214 is a standard component of the Microsoft® Windows® operating system. For example, application 212 can make the request via a call to I / O manager 214 named UNC (which is in the form of Wserver \ share \ subdirectorv \ filenameV I / O manager 214 then passes the request to MUP 218. There may be multiple identifiers for one transaction and multiple transactions for a given file. for a file on the client, the I / O manager 214 would pass the request to NTFS 216 in the default mode, [0030] MUP 218 then finds the redirector needed to execute the request, in this case the redirector is RDR 220. MUP 218 is a standard component of the Microsoft® Windows® operating system.In this mode, RDR 220 is a version of the RDR of the Microsoft® Windows® operating system, with additions so that RDR can interact with TM 222 to perform transactions Additions include, for example, the ability to retrieve transaction contexts for transactional file operations from requests, assign file control blocks (FCBs) for transactional file operations, send transactions to remote devices. receive network responses to transactional file operations (including File identifiers and version identifiers), perform transaction operations under the direction of TM 222, and function as a resource manager with TM 222 so that RDR 220 can keep track of the status of a transaction. In some embodiments, RDR 220 is implemented as described in commonly-assigned US Patent Application No. 09 / 539,233, filed March 30, 2000, entitled "Transactional File System" and Application No. [Case No. MS-1]. 1781US]. Operating as a resource manager is described below. RDR 220 contains features for transaction buffering, cache memory, file control blocks (FCBs), file object extensions (FOBXs), and other structures required to process the transaction and request.

[0031] Em um bloco 304, o RDR 220 recupera a transação a partir do TM 222 e conduz a transação para transmissão para o servidor 204. Em uma modalidade, o RDR 220 recupera a transação por chamar uma API (cujas modalidades são descritas abaixo) exposta pelo TM 222 e conduz a transação por formatar a informação de transação (por exemplo, uma bolha de condução) para transmissão utilizando uma versão do protocolo SMB que foi estendida para suportar transações. As extensões SMB de uma modalidade ilustrativa são resumidas abaixo em conjunto com as Tabelas 1 até 3. Em um bloco 306, o RDR 220 envia a transação e as requisição para o servidor 204, como indicado por uma seta 236. Em um bloco 308, o RDR 220 recebe resultados a partir da operação de arquivo a partir do servidor 204. Por exemplo, o servidor 204 envia uma resposta para a requisição que contém os e identificadores de arquivo e de versão mencionados acima. Nesta modalidade, o SRV 234 é uma versão do SRV do sistema operacional Microsoft® Windows®, com adições de modo que o SRV possa intera- gir com um cliente através de uma rede para executar transações utilizando extensão para SMB, incluindo passar identificadores de Arquivo e de versão para os clientes durante as operações de arquivo remoto transacionadas. EXTENSÃO - DESCRICÃO Adiciona um novo comando: NT_TRANSACT_CREATE2 Pega uma transação conduzida e envia duas estruturas através da rede: REQ_CREATE_WITH_EXTRA_OPTIONS e RESP_CREATE_W ITH_EXTRA_OPTIONS. Estas duas estruturas são definidas, respectívamente, nas Tabelas 2 e 3 e são extensões das estruturas SMB: REQ_CREATE_WITH_SD_OR_EA e RESP_EXTENDED_CREATE_WITH_SD_OR_EA.In block 304, RDR 220 retrieves the transaction from TM 222 and conducts the transaction for transmission to server 204. In one embodiment, RDR 220 retrieves the transaction by calling an API (the modalities of which are described below). ) exposed by TM 222 and drive the transaction by formatting transaction information (e.g., a driving bubble) for transmission using a version of the SMB protocol that has been extended to support transactions. SMB extensions of an illustrative embodiment are summarized below in conjunction with Tables 1 through 3. In block 306, RDR 220 sends the transaction and requests to server 204, as indicated by an arrow 236. In block 308, RDR 220 receives results from the file operation from server 204. For example, server 204 sends a response to the request containing the file and version identifiers mentioned above. In this embodiment, SRV 234 is a version of SRV of the Microsoft® Windows® operating system, with additions so that SRV can interact with a client across a network to perform transactions using SMB extension, including passing File handles. and release to clients during transacted remote file operations. EXTENSION - DESCRIPTION Adds a new command: NT_TRANSACT_CREATE2 Takes a conducted transaction and sends two structures across the network: REQ_CREATE_WITH_EXTRA_OPTIONS and RESP_CREATE_W ITH_EXTRA_OPTIONS. These two structures are defined respectively in Tables 2 and 3 and are extensions of the SMB structures: REQ_CREATE_WITH_SD_OR_EA and RESP_EXTENDED_CREATE_WITH_SD_OR_EA.

Adiciona um novo bit de capacidade: CAP_TXF CAPTXF é estabelecido ou reinidalizado pelo servidor para indicar se o servidor suporta transações. CAP_TXF é parte do SMB Negotiate Response. Nesta modalidade, GAP_TXF é definido como 0x20000 para indicar que o servidor suporta transações.Adds a new capacity bit: CAP_TXF CAPTXF is set or reset by the server to indicate if the server supports transactions. CAP_TXF is part of SMB Negotiate Response. In this mode, GAP_TXF is set to 0x20000 to indicate that the server supports transactions.

Adiciona um novo identificador: S M B_F IN D_TR AN S ACTE D_0 P E R ATI O N para a requisição SMB FiND, A estrutura da requisição FIND (REQ_FIND_FIRST2) é definida na Tabela 4 e na estrutura de resposta na Tabela 5, SMB_FlND_TRANSACTED_OPERATIONAdds a new identifier: S M B_F IN D_TR AN S ACTE D_0 P E R ATI N N for SMB FiND request, FIND request structure (REQ_FIND_FIRST2) is defined in Table 4 and the response structure in Table 5, SMB_FlND_TRANSACTED_OPERATION

[0032] Indica que uma transação está sendo utilizada. Este identificador é utilizado porque nesta modalidade, as operações de busca são baseadas em caminho ao invés de baseadas no identificador. Nesta modalidade, este identificador é definido como 0x20. A informação de transação é enviada no fim dos comandos FIND e ECHO se este identificador estiver estabelecido.[0032] Indicates that a transaction is being used. This identifier is used because in this mode, search operations are path based rather than identifier based. In this embodiment, this identifier is set to 0x20. Transaction information is sent at the end of the FIND and ECHO commands if this identifier is set.

[0033] Estende o comando ECHO para enviar notificações de alterações de estado de transação. As estruturas de requisição / resposta são definidas na Tabela 6 e 7.[0033] Extends the ECHO command to send notifications of transaction state changes. The request / response structures are defined in Tables 6 and 7.

[0034] O comando SMB ECHO é estendido para proporcionar notificação dos estados de preparo anterior, preparo, entrega e de reversão de uma operação de transação a partir do servidor para o cliente. TABELA 1 REQ_CREATE_WITH_EXTRA_OPTIONS CAMPO - DESCRIÇÃO DO CONTEÚDO _ULONG( Indicadores ) Identificadores de criação NTCREATExxx _ULONG( RootDirectoryFid ) Diretório opcional para abertura relativa ACCESS_MASK DesiredAccess Acesso desejado (formato NT) LARGEJNTEGER AlIocationSize O tamanho de alocação inicial em bytes ULONGÍ FileAttributes ) Os atributos do arquivo _ULONG( Share Access ) O acesso de com parti lhamento _ULONG( CreateDisposition ) Ação a ser tomada se o arquivo existir ou não _ULONG( CreateOptions ) Opções para criar um novo arquivo _ULONG( SecurttyDescriptionLength ) Tamanho do SD em bytes JJLONG ( EaLength ) Tamanho do atributo estendido (EA) em bytes JJLONG ( NameLength ) Tamanho do nome em caracteres _ULONG (ImpersonationLevel) Informação de segurança da Qualidade de Serviço (QOS) JJCHAR SecurityFlags Informações QOS de segurança JJLONG (TransactionLength) Tamanho do contexto da transação conduzida em bytes JJLONG ( EfsStreamLength ) Tamanho do fluxo do sistema de arquivo criptografado ($EFS) em bytes UCHAR Buffer [1] Memória intermediária para o nome do arquivo, a qual é alinhada na memória intermediária de dados com um limite DWORD (4 bytes) UCHAR Name[| O nome do arquivo (não terminado em NUL) TABELA 2 R E S P_C R E ATE_W I TH_EXT R A_0 PT IO N S CAMPO - DESCRIÇÃO DO CONTEÚDO UCHAR OpIocKLevel O nível de bloqueio oportunístico concedido UCHAR - ExtendedResponse Estabelecido para 1 para resposta Estendida _USHORT( Fid ) AID do arquivo _ULONG ( CreateAction ) A ação tomada _ULONG ( EaErrorOffset) Deslocamento do erro EA TIME CreationTime A hora em que o arquivo foi criado TIME LastAcessTime A hora em que o arquivo foi acessado TIME LastWriteTime A hora em que o arquivo foi gravado pela última vez TIME ChangeTime A hora em que o arquivo foi alterado pela última vez _ULONG( FileAttributes )Os atributos do arquivo LARGEJNTEGER AlIocationSize O número de bytes alocados LARGE INTEGER EndOfFile O fim do deslocamento do arquivo JJSHORT ( FileType) O tipo de arquivo do arquivo _USHORT( DeviceState )0 estado do dispositivo IPC (por exemplo, canal) BOOLEAN Directory TRUE se esta estrutura for um diretório UCHAR VolumeGuid [16] A GUID do volume (ID Globalmente Único) UCHAR Fileld[8] O ID do arquivo _ULONG( MaxlmalAccessRights ) Os direitos de acesso para o dono da sessão JJLONG ( GuestMaximalAccessRights) Os direitos de acesso máximos para visitantes LARGEJNTEGER FilesystemFid O Fid NTSF no servidor, para diferenciar entre diferentes arquivos possuindo o mesmo nome de caminho, O mesmo nome de caminho poderia referír-se à dois arquivos diferentes enquanto utilizando transações (TxF) JJLONG (VersionNum );0 número da versão TxF do arquivo que está aberto TABELA 3 REQ_FIND_FIRST2 CAMPO - DESCRICÃO DO CONTEÚDO JJSHORT (SearchAttributes) Atributos de pesquisa _USHORT( SearchCount) Número máximo de registros à se retornar _USHORT( Indicadores ) Informações adicionais: bit estabelecido para 0 - fecha pesquisa após esta requisição; 1 - fecha pesquisa se o fim foi alcançado; 2 - retorna Chaves de reinicio _USHORT( Information Levei) Nível de informação _ULONG(SearchStorageType) Tipo de armazenamento da pesquisa UCHAR Buffer [1] Nome do arquivo TABELA 4 Rsp_find_first2 CAMPO - DESCRICÃO DO CONTEÚDO _USHORT( Sid ) Identificador de pesquisa _USHORT( SearchCount) Número de entradas retornadas _USHORT( EndOfSearch ) A último entrada foi retornada ?The SMB ECHO command is extended to provide notification of the previous staging, staging, delivery, and rollback states of a transaction operation from the server to the client. TABLE 1 REQ_CREATE_WITH_EXTRA_OPTIONS FIELD - CONTENT DESCRIPTION _ULONG (Indicators) NTCREATExxx Creation Identifiers _ULONG (RootDirectoryFid) Optional Relative Open Directory ACCESS_MASK DesiredAccess Desired Access (NT Format) LARGEJNTEGER AlIocationSize The initial file size Attributes Size of the ALONG file AlertsAt the length of the file ALONG file size (Share Access) Sharing access _ULONG (CreateDisposition) Action to take if file exists _ULONG (CreateOptions) Options for creating a new file _ULONG (SecurttyDescriptionLength) SD Size in bytes JJLONG (EaLength) Attribute Size extended (EA) in bytes JJLONG (NameLength) Name size in characters _ULONG (ImpersonationLevel) Quality of Service (QOS) security information JJCHAR SecurityFlags JJLONG (TransactionLength) security QOS information Size of transaction context driven in bytes JJLONG (EfsStreamLength) ) Size d encrypted file system ($ EFS) stream in bytes UCHAR Buffer [1] Buffer for the file name, which is aligned in data buffer with a DWORD limit (4 bytes) UCHAR Name [| The file name (not ending in NUL) TABLE 2 RES P_C RE ATE_W I TH_EXT R A_0 EN IO NS FIELD - CONTENT DESCRIPTION UCHAR OpIocKLevel The opportunistic lock level granted UCHAR - ExtendedResponse Set to 1 for Extended Response _USHORT (Fid) AID File Extension _ULONG (CreateAction) Action Taken _ULONG (EaErrorOffset) Error Offset EA TIME CreationTime The Time File Was Created TIME LastAcessTime The Time File Was Accessed TIME LastWriteTime The Time File Was Last Written TIME ChangeTime The time the file was last changed _ULONG (FileAttributes) The file attributes LARGEJNTEGER AlIocationSize The number of bytes allocated LARGE INTEGER EndOfFile The end of the file offset JJSHORT (FileType) The file type of the _USHORT (DeviceState) file ) IPC device state (for example, channel) BOOLEAN Directory TRUE if this structure is a UCHAR directory VolumeGuid [16] A GUID volume (Globally Unique ID) UCHAR Fileld [8] The _ULONG (MaxlmalAccessRights) file ID The access rights for the session owner JJLONG (GuestMaximalAccessRights) The maximum access rights for visitors LARGEJNTEGER FilesystemFid The NTSF Fid on the server, to differentiate between different files having the same path name, The same path name could refer to two different files while using transactions (TxF) JJLONG (VersionNum); 0 TxF version number of file that is open TABLE 3 REQ_FIND_FIRST2 FIELD - DESCRIPTION CONTENTS JJSHORT (SearchAttributes) Search Attributes _USHORT (SearchCount) Maximum number of records to return _USHORT (Indicators) Additional Information: bit set to 0 - close search after this request; 1 - close search if the end has been reached; 2 - returns Reset Keys _USHORT (Information Light) Information Level _ULONG (SearchStorageType) Search Storage Type UCHAR Buffer [1] File Name TABLE 4 Rsp_find_first2 FIELD - CONTENT DESCRIPTION _USHORT (Sid) Search Identifier _USHORT (SearchCount) Number of Entries Returned _USHORT (EndOfSearch) Was the last entry returned?

_USHORT( EaErrorOffset) Deslocamento dentro da lista EA se existir erro EA _U L O N G (Sea rchSto rageT y pe) Tipo de armazenamento da pesquisa _USHORT( LastNameOffset) Deslocamento dentro dos dados para o nome de arquivo da última entrada, caso o servidor precise recomeçar a pesquisa; senão 0 TABELA 5 REQECHO CAMPO - DESCRIÇÃO DO CONTEÚDO UCHAR WordCount Contagem de palavras de parâmetro = 1 _USHORT( SearchCount) Número de registros retornados _USHORT( EndOfSearch )A último entrada foi retornada ?_USHORT (EaErrorOffset) Offset within EA list if error exists EA _U LONG (Sea rchSto rageT y pe) Search storage type _USHORT (LastNameOffset) Offset within data to last input filename if server needs to restart search; otherwise 0 TABLE 5 REQUEST FIELD - CONTENT DESCRIPTION UCHAR WordCount Parameter word count = 1 _USHORT (SearchCount) Number of records returned _USHORT (EndOfSearch) Was the last entry returned?

_USHORT( EaErrorOffset) Deslocamento dentro da lista EA se houver erro EA _USHORT( LastNameOffset) Deslocamento dentro dos dados para o nome de arquivo da última entrada, caso o servidor precise do mesmo para recomeçar a pesquisa; senão 0 TABELA 6 Rsp_echo CAMPO - DESCRIÇÃO DQ CONTEÚDO UCHAR WordCount Contagem de palavras de parâmetro = 1 _USHORT( SequenceNumber) Número de sequência deste eco _USHORT( ByteCount) Contagem de bytes de dados; min = 4 UCHAR Buffer[1] Dados ecoados TABELA 7 [0035] A FIG. 3A apresenta o bloco 302 (FIG. 3) em maiores detalhes» de acordo com uma modalidade. Em um bloco 312, o RDR 220 recupera o contexto de transação para a operação de arquivo requisitada. Ao se abrir um arquivo remoto transacionado, o RDR 220 determina se uma transação já está associada com a requisição. Por exemplo, em uma modalidade, uma transação é associada com uma requisição por ligá-la com um encadeamento, porém em outras modalidades diferentes métodos podem ser utilizados para associar uma transação com uma requisição. Em uma modalidade, o RDR 220 executa esta operação por verificar para ver se a requisição possui um identifi- cador de transação associado com a mesma. Caso possua, a requisição é unida com a transação existente. Se não, o RDR 220 manipula a requisição no modo padrão para requisições não transacionadas._USHORT (EaErrorOffset) Offset within EA list if there is an error EA _USHORT (LastNameOffset) Offset within the data to the file name of the last entry if the server needs it to restart the search; otherwise 0 TABLE 6 Rsp_echo FIELD - DESCRIPTION DQ CONTENT UCHAR WordCount Parameter word count = 1 _USHORT (SequenceNumber) Sequence number of this echo _USHORT (ByteCount) Data byte count; min = 4 UCHAR Buffer [1] Data echoed TABLE 7 [0035] FIG. 3A shows block 302 (FIG. 3) in more detail according to one embodiment. In block 312, RDR 220 retrieves the transaction context for the requested file operation. When opening a transacted remote file, RDR 220 determines if a transaction is already associated with the request. For example, in one embodiment, a transaction is associated with a request by linking it with a thread, but in other embodiments different methods may be used to associate a transaction with a request. In one embodiment, RDR 220 performs this unchecked operation to see if the request has a transaction identifier associated with it. If so, the request is merged with the existing transaction. If not, RDR 220 handles the request in standard mode for non-transacted requests.

[0036] O RDR 220 então designa um FCB para a requisição. Como anteriormente mencionado, várias transações com várias requisições podem abrir um dado arquivo. Assim, em uma modalidade do bloco 302 (FIG. 3), um bloco 314 é executado no qual o RDR 220 determina se um FCB existente pode ser utilizado para a requisição. Nesta modalidade, o RDR 220 verifica para ver se o arquivo (isto é, nome de caminho) da requisição e do contexto de transação associado com o encadeamento fazendo a requisição se associa com estas de um FCB existente. Por exemplo, se duas operações de gravação do mesmo arquivo fossem requisitadas na mesma transação, durante o processamento da segunda requisição, um FCB já existiría para a primeira requisição. Devido ao fato de ambas as operações serem operações de gravação, o mesmo FCB pode ser utilizado para ambas.[0036] RDR 220 then assigns an FCB to the request. As mentioned earlier, multiple transactions with multiple requests can open a given file. Thus, in a block 302 embodiment (FIG. 3), a block 314 is executed in which RDR 220 determines whether an existing FCB can be used for the request. In this mode, RDR 220 checks to see if the file (ie, path name) of the request and the transaction context associated with the thread making the request is associated with these from an existing FCB. For example, if two write operations of the same file were requested in the same transaction, while processing the second request, an FCB would already exist for the first request. Because both operations are write operations, the same FCB can be used for both.

[0037] Se no bloco 314 o RDR 220 determinar que um FCB existe com o mesmo contexto de transação e com o mesmo arquivo (isto é, nome de caminho) e com a mesma versão, então em um bloco 316 o FCB existente é utilizado para a requisição. Em algumas modalidades, o RDR 220 irá utilizar o FCB que possui a versão mais recente. Por exemplo, se uma operação de leitura de um arquivo seguir uma operação de gravação neutra ("uncommitted") do mesmo arquivo, o RDR 220 irá utilizar a versão do arquivo correntemente sendo utilizada pela operação de gravação. Esta maneira de se abordar permite o uso mais eficiente da colocação em memória cache.If in block 314 RDR 220 determines that an FCB exists with the same transaction context and file (ie path name) and version, then in block 316 the existing FCB is used. for the request. In some embodiments, the RDR 220 will use FCB that has the latest version. For example, if a file read operation follows an uncommitted write operation of the same file, RDR 220 uses the version of the file currently being used by the write operation. This approach allows for the most efficient use of caching.

[0038] Entretanto, se no bloco 314 um FCB existente não puder ser utilizado para a requisição, em um bloco 318 o RDR cria um novo FCB para a requisição. Em uma modalidade alternativa, um novo FCB é criado para cada requisição.However, if in block 314 an existing FCB cannot be used for the request, in block 318 RDR creates a new FCB for the request. In an alternative embodiment, a new FCB is created for each request.

[0039] A FIG. 4 ilustra um exemplo de várias requisições transacionadas neutras para o mesmo arquivo. Como apresentado na FIG. 4, uma operação 401 corresponde à uma requisição por uma operação de leitura de um arquivo. Isto é, a operação do arquivo é para "abrir para leitura". A operação 401 possui um identificador H1 e uma transação T1 associada com a mesma. A versão do arquivo que é requisitada pelo RDR 220 (FIG. 2) é indicada como versão A. Assumindo-se que esta é a primeira transação neutra para este arquivo, a versão A é recuperada a partir do servidor 204 (FIG. 2) e colocada em memória cache no cliente 202 (FIG. 2) [0040] Em um momento posterior, uma operação 402 é requisitada no mesmo arquivo. Nesta operação ilustrativa 402 também existe uma operação de leitura, possuindo um identificador H2 e uma transação T2. Devido ao fato da transação ser diferente desta da operação 401, o RDR 220 novamente recupera a versão A do arquivo a partir do servidor 204.FIG. 4 illustrates an example of several neutral transaction requests to the same file. As shown in FIG. 4, an operation 401 corresponds to a request for a read operation of a file. That is, the file operation is for "open for reading". Operation 401 has an H1 identifier and a T1 transaction associated with it. The file version that is requested by RDR 220 (FIG. 2) is indicated as version A. Assuming this is the first neutral transaction for this file, version A is retrieved from server 204 (FIG. 2) and cached on client 202 (FIG. 2) [0040] At a later time, an operation 402 is requested in the same file. In this illustrative operation 402 there is also a read operation having an identifier H2 and a transaction T2. Because the transaction is different from that of operation 401, RDR 220 again retrieves version A of the file from server 204.

[0041] Neste exemplo, uma operação 403 é então requisitada no mesmo arquivo na mesma transação da operação 402. Assim, a operação 403 possui um identificador H3 e é unido com a transação T2. Entretanto, a operação 403 é uma operação de gravação neste exemplo e assim, o RDR 220 localmente se lembra (por exemplo, coloca em memória cache) de uma versão B do arquivo. A versão B é algumas vezes referida como uma "versão suja".[0041] In this example, an operation 403 is then requested in the same file in the same transaction as operation 402. Thus, operation 403 has an identifier H3 and is joined with transaction T2. However, operation 403 is a write operation in this example and so RDR 220 locally remembers (for example, caches) a version B of the file. Version B is sometimes referred to as a "dirty version".

[0042] Uma operação 404 é então requisitada no mesmo arquivo na mesma transação das operações 402 e 403. Assim, a operação 404 possui um identificador H4 e também é unida com a transação T2. Neste exemplo, a operação 404 é uma operação de leitura. Nesta modalidade, resultando a partir do bloco 314 (FIG. 3A), o RDR 220 irá se lembrar e possivelmente colocar em memória cache a versão B para a operação 404.An operation 404 is then requested in the same file in the same transaction as operations 402 and 403. Thus operation 404 has an identifier H4 and is also joined with transaction T2. In this example, operation 404 is a read operation. In this embodiment, resulting from block 314 (FIG. 3A), RDR 220 will remember and possibly cache version B for operation 404.

[0043] Uma operação 405 é então requisitada no mesmo arquivo em uma transação diferente. Assim, a operação 405 possui um identificador H5 e está associada com uma nova transação T3. Devido ao fato da transação ser diferente desta das operações anteriores, em uma modalidade o RDR 220 novamente recupera a versão A do arquivo a partir do servidor 204. Em outra modalidade, o RDR 220 reconhece que a versão A ainda é a versão corrente sem consultar o servidor 204 (FIG. 2) e utiliza a versão "local" A. Por exemplo, esta modalidade alternativa pode utilizar bloqueios oportunísticos para se tornar ciente de quaisquer versões mais novas do arquivo que reside no servidor 204. Isto é, o RDR 220 pode associar um bloqueio oportunístico com o arquivo que não impede gravações junto ao arquivo no servidor 204, mas causa que o servidor 204 sinalize para o RDR 220 que o bloqueio foi rompido. Em tal caso, o RDR 200 então saberia que a versão A não é mais a versão corrente. Ainda em outra modalidade, o RDR 220 pode consultar o servidor 204 para determinar a versão corrente do arquivo e então reutilizar um FCB existente que está associado com a versão corrente.[0043] An operation 405 is then requested on the same file in a different transaction. Thus, operation 405 has an identifier H5 and is associated with a new transaction T3. Because the transaction is different from previous operations, in one mode RDR 220 again retrieves version A of the file from server 204. In another mode, RDR 220 recognizes that version A is still the current version without querying. server 204 (FIG. 2) and uses "local" version A. For example, this alternative embodiment may use opportunistic locks to become aware of any newer versions of the file residing on server 204. That is, RDR 220 may associate an opportunistic lock with the file that does not prevent writes to the file on server 204, but causes server 204 to signal to RDR 220 that the lock has been broken. In such a case, the RDR 200 would then know that version A is no longer the current version. In yet another embodiment, RDR 220 may query server 204 to determine the current version of the file and then reuse an existing FCB that is associated with the current version.

[0044] Então, em uma operação 406, a transação T2 é entregue ("committed"). Isto possui o efeito de alterar a versão no servidor 204. Esta nova versão armazenada no servidor 204 é referida como versão C. Como foi anteriormente descrito, devido ao fato do RDR 220 funcionar como um gerenciador de recurso durante todas as transações remotas, o RDR 220 aprende que o servidor 204 possui uma nova versão do arquivo.Then, in a 406 operation, transaction T2 is committed. This has the effect of changing the version on server 204. This new version stored on server 204 is referred to as version C. As previously described, because RDR 220 functions as a resource manager during all remote transactions, RDR 220 learns that server 204 has a new version of the file.

[0045] Uma operação 407 é então requisitada no mesmo arquivo na mesma transação da operação 401. Assim, a operação 407 possui um identificador H6 e é unida com a transação T1. Entretanto, devido ao fato do RDR 220 estar ciente da versão C do arquivo no servidor 204, o RDR 220 se lembra e possivelmente coloca em memória cache a versão C para esta operação. Em algumas modalidades, o RDR 220 recupera a versão C a partir do servidor 204.An operation 407 is then requested in the same file in the same transaction as operation 401. Thus operation 407 has an identifier H6 and is joined with transaction T1. However, because RDR 220 is aware of the C version of the file on server 204, RDR 220 remembers and possibly caches version C for this operation. In some embodiments, RDR 220 retrieves version C from server 204.

[0046] De forma similar, quando uma operação 408 é requisitada para o mesmo arquivo pela mesma transação da operação 405, a operação 408 possui um identificador H7 e é unida com a transação T3. Novamente, devido ao fato do RDR 220 estar ciente da versão C do arquivo no servidor 204, o RDR 220 se lembra e possivelmente coloca em memória cache a versão C para esta operação.Similarly, when an operation 408 is requested to the same file by the same transaction as operation 405, operation 408 has an identifier H7 and is joined with transaction T3. Again, because RDR 220 is aware of the C version of the file on server 204, RDR 220 remembers and possibly caches version C for this operation.

[0047] A FIG. 5 ilustra como os dados colocados em memória cache a partir do cliente 202 (FIG. 2) são atualizados para (isto é, de forma durável armazenados no) servidor 204 (FIG. 2), de acordo com uma modalidade. Referindo-se às FIGS. 2 e 5, o cliente 202 atualiza dados para o servidor 204 como descrito abaixo, de acordo com uma modalidade.FIG. 5 illustrates how data cached from client 202 (FIG. 2) is updated to (i.e. durably stored on) server 204 (FIG. 2) according to one embodiment. Referring to FIGS. 2 and 5, client 202 updates data to server 204 as described below, according to one embodiment.

[0048] Em um bloco 502, a aplicação gerando os dados faz uma chamada ou emite uma requisição para entregar a transação. Esta chamada ou requisição é passada para o TM 222. Em resposta, o TM 222 gera uma Notificação de Preparo anterior (descrita abaixo em conjunto com o Gerenciador de Transação ilustrativo).[0048] In block 502, the application generating the data makes a call or issues a request to deliver the transaction. This call or request is passed to TM 222. In response, TM 222 generates a previous Readiness Notification (described below in conjunction with the illustrative Transaction Manager).

[0049] Nesta modalidade, o RDR 220 recebe a Notificação de Preparo Anterior a partir do TM 222, como apresentado em um bloco 504. Em resposta, o RDR 220 atualiza os dados para o SRV 234 via a rede. O SRV 234 por sua vez passa os dados para o NTFS 216A. Estas operações são representadas por um bloco 506. Em algumas modalidades, o TM 222A do servidor 204 indica ao RDR 220 quando a operação de Preparo Anterior estiver completa. O bloco 504 e 506 ajuda a garantir que os dados a partir do cliente 202 a serem gravados no servidor 204 estejam presentes no servidor 204 antes de uma operação de Preparo (descrita abaixo em conjunto com o Gerenciador de Transação Ilustrativo) ser executada.In this embodiment, RDR 220 receives Prior Preparation Notification from TM 222, as presented in block 504. In response, RDR 220 updates data to SRV 234 via the network. SRV 234 in turn passes the data to NTFS 216A. These operations are represented by a block 506. In some embodiments, the TM 222A of server 204 indicates to RDR 220 when the Previous Prepare operation is complete. Block 504 and 506 help ensure that data from client 202 to be written to server 204 is present on server 204 before a Prepare operation (described below in conjunction with Illustrative Transaction Manager) is performed.

[0050] Em um bloco 508, o RDR 220 recebe um Notificação de Preparo (descrita abaixo em conjunto com o Gerenciador de Transação Ilustrativo) a partir do TM 222. Em uma modalidade, o RDR 220 envia uma mensagem Notificação de Preparo para o servidor 204 em resposta à Notificação de Preparo, a qual é passada para o TM 222A. Por sua vez, o TM 222A passa a Notificação de Preparo para o NTFS 216A. Estas operações são representadas pelos blocos 510 e 512. A Notificação de Preparo causa que o cliente 202 e o servidor 204 armazenem os dados de um modo que permita aos dados serem entregues ou revertidos. Em algumas modalidades, o TM 222A do servidor 204 indica ao RDR 220 quando a operação de Preparo estiver completa. Os dados são então processados utilizando operações de entrega de duas fases padrão (por exemplo, operações que causam que a transação seja entregue ou cancelada), como representado por um bloco 514.In block 508, RDR 220 receives a Ready Notification (described below in conjunction with Illustrative Transaction Manager) from TM 222. In one embodiment, RDR 220 sends a Ready Notification message to the server. 204 in response to the Readiness Notification, which is passed to TM 222A. In turn, TM 222A passes the Ready Notification to NTFS 216A. These operations are represented by blocks 510 and 512. The Readiness Notification causes client 202 and server 204 to store data in a manner that allows data to be delivered or rolled back. In some embodiments, the TM 222A of server 204 tells RDR 220 when the Prepare operation is complete. The data is then processed using standard two-phase delivery operations (for example, operations that cause the transaction to be delivered or canceled), as represented by a block 514.

[0051] Apesar do gerenciamento de transação ser descrito acima como sendo executado utilizando componentes TM separados (isto é, TM 222 e 222A), em outras modalidades a infra-estrutura de gerenciamento de transação pode ser integrada na infra-estrutura do sistema de arquivos. Adicionalmente, em tais modalidades integradas, as mensagens de transação (por exemplo, Preparo Anterior, Prepara, Entrega, Cancela, etc., como descrito abaixo) fluem com as mensagens de arquivo no canal de transmissão. gerenciador de transação ilustrativo [0052] A FIG. 6 ilustra componentes utilizados na execução de uma transação, de acordo com uma modalidade. Um grupo de operações que constituem uma transação particular são para de forma coletiva possuírem propriedades conhecidas, pelo menos para estas na técnica, pela acrossemia "ACID", a qual inclui "atomicidade", "consistência", "isolamento" e "durabilidade". De forma mais específica: todas as atualizações de dados resultando a partir das respectivas operações de uma transação são permanentes ou nenhuma é permanente (atomicidade); uma transação deixa os dados subjacentes em um estado consistente (consistência); os efeitos de uma atualização de transação não são visíveis às outras operações executando simultaneamente até a transação geral ser feita permanente (isolamento); e após um resultado para a transação ter sido determinado, o resultado é garantido de nunca se alterar (durabilidade).Although transaction management is described above as being performed using separate TM components (ie TM 222 and 222A), in other embodiments the transaction management infrastructure may be integrated into the file system infrastructure. . Additionally, in such integrated embodiments, transaction messages (e.g., Pre-Prepare, Prepare, Delivery, Cancel, etc., as described below) flow with the archive messages on the transmission channel. illustrative transaction manager [0052] FIG. 6 illustrates components used in executing a transaction according to one embodiment. A group of operations that constitute a particular transaction are to collectively possess properties known, at least to those in the art, by the "ACID" acrosemia, which includes "atomicity", "consistency", "isolation" and "durability". More specifically, all data updates resulting from the respective operations of a transaction are permanent or none is permanent (atomicity); a transaction leaves the underlying data in a consistent state (consistency); The effects of a transaction update are not visible to other operations running concurrently until the overall transaction is made permanent (isolation); and after a result for the transaction has been determined, the result is guaranteed never to change (durability).

[0053] O exemplo de gerenciamento de transação de nível núcleo da FIG. 6 é direcionado para um exemplo de uma transação distribuída, envolvendo mais do que um dispositivo e mantém as características "ACID" esperadas de uma transação. Adicionalmente, ao passo que o exemplo da FIG. 6 referencia objetos núcleo, o exemplo não está de modo algum limitado às transações implementadas pelos objetos núcleo. De forma mais específica, as transações, descritas aqui dentro, podem ser implementadas por objetos diferentes dos objetos núcleo, ou por um tipo diferente de gerenciador de transação.The core level transaction management example of FIG. 6 is directed to an example of a distributed transaction involving more than one device and retains the expected "ACID" characteristics of a transaction. Additionally, while the example of FIG. Referring to core objects, the example is by no means limited to transactions implemented by core objects. More specifically, the transactions described here may be implemented by different objects than core objects, or by a different type of transaction manager.

[0054] Na FIG. 6, uma transação correspondendo à aplicação cliente 600 utiliza, pelo menos, o gerenciador de transação 605 em um primeiro dispositivo, bem como a aplicação cliente 600B e o gerenciador de transação 635 em um segundo dispositivo. A aplicação cliente 600B está associada com a aplicação cliente 600. Os gerenciadores de transação 605 e 635, os quais estão em comunicação um com o outro, podem ser agregados de objetos núcleo que mantém informação de estado sobre as transações e recursos gerais e adicionalmente coordenam a interação ou o protocolo entre aplicações cliente e gerenciadores de recurso (RM) associados.In FIG. 6, a transaction corresponding to client application 600 utilizes at least transaction manager 605 on a first device as well as client application 600B and transaction manager 635 on a second device. Client application 600B is associated with client application 600. Transaction managers 605 and 635, which are in communication with each other, can be aggregates of core objects that maintain state information about transactions and general resources and additionally coordinate. the interaction or protocol between client applications and associated resource managers (RM).

[0055] Os gerenciadores de recurso, incluindo o RM 625 e o RM 630 no exemplo da FIG. 6, mantém o estado de pelo menos um recurso subjacente que é capaz de armazenar dados em um estado durável.Resource managers including RM 625 and RM 630 in the example of FIG. 6, maintains the state of at least one underlying resource that is capable of storing data in a durable state.

Exemplos não exclusivos de tais recursos incluem bases de dados e filas de mensagem. Em um primeiro dispositivo na modalidade ilustrativa da FIG. 6, o RM 625 corresponde ao recurso 627; O RM 630 corresponde ao recurso 632; e em um segundo dispositivo, o RM 655 corresponde ao recurso 657.Non-exclusive examples of such features include databases and message queues. In a first device in the illustrative embodiment of FIG. 6, RM 625 corresponds to resource 627; RM 630 corresponds to resource 632; and on a second device, RM 655 corresponds to resource 657.

[0056] Como apresentado na FIG. 6, o gerenciador de transação 605 em um primeiro dispositivo inclui os seguintes objetos núcleo: objeto de transação (TX) 610, o objeto gerenciador de recurso (RMO) 615 e o objeto de alistamento (EN) 620; e o gerenciador de transação 635 em um segundo dispositivo inclui os seguintes objetos núcleo: TX 640, RMO 645 e EN 650. O TX representa uma transação particular e pode ser aberto por um processo participando na transação.As shown in FIG. 6, transaction manager 605 on a first device includes the following core objects: transaction object (TX) 610, resource manager object (RMO) 615 and enlistment object (EN) 620; and transaction manager 635 on a second device includes the following core objects: TX 640, RMO 645, and EN 650. TX represents a particular transaction and can be opened by a process participating in the transaction.

[0057] O RMO representa um recurso que participa em uma transação particular. A participação pelo RMO em uma transação inclui receber mensagens de entrega de duas fases. Adicionalmente, o RMO é persistente de modo que o gerenciador de transação correspondente sabe qual resultado de transação é para ser transmitido para um RM correspondente. De forma alternativa, o RMO pode ser transitório assim permitindo às aplicações cliente aderirem à um fluxo de notificações de transação sem gerenciar um RMO persistente através das falhas.[0057] The RMO represents a resource that participates in a particular transaction. Participation by the RMO in a transaction includes receiving two-phase delivery messages. Additionally, the RMO is persistent so that the corresponding transaction manager knows which transaction result is to be transmitted to a corresponding RM. Alternatively, the RMO can be transient thus allowing client applications to adhere to a transaction notification flow without managing a persistent RMO through failures.

[0058] O EN representa a relação entre uma transação e um gerenciador de recurso. Um gerenciador de recurso indica que ele irá participar em uma transação por criar um alistamento no mesmo. Quando o RMO foi requisitado para executar uma operação (tal como Prepara, Entrega, etc.) em uma transação particular, ele utiliza o EN para indicar a participação. Um gerenciador de recurso pode possuir mais do que um EN em uma Transação particular.[0058] EN represents the relationship between a transaction and a resource manager. A resource manager indicates that it will participate in a transaction by creating an enlistment in it. When the RMO has been required to perform an operation (such as Prepare, Deliver, etc.) on a particular transaction, it uses the EN to indicate participation. A resource manager may have more than one EN in a particular Transaction.

[0059] O protocolo de entrega de duas fases, o qual é implementado para garantir que uma transação de forma bem sucedida atualize todos os arquivos apropriados, é descrito para um ambiente núcleo com referência aos exemplos das FIGS. 6 e 7, como se segue. Em particular, após a aplicação cliente 600 abrir os objetos núcleo correspondendo ao gerenciador de transação 605 em um primeiro dispositivo e o SRV 234 (FIG. 2) abrir objetos núcleo correspondendo ao gerenciador de transação 635 em um segundo dispositivo, uma fase de "preparo" 705 começa com sendo enviado 705 para cada RM na transação uma ordem "prepara" a partir de um gerenciador de transação correspondente. Assim alertado, o RM se prepara 710 por sintetizar dados de recurso em um estado durável de modo que os dados nos respectivos recursos sejam capazes de serem "entregues" ou "revertidos". Quando da preparação, o RM transmite 715 uma mensagem de confirmação para o TX do gerenciador de transação correspondente.The two-phase delivery protocol, which is implemented to ensure that a transaction successfully updates all appropriate files, is described for a core environment with reference to the examples in FIGS. 6 and 7 as follows. In particular, after client application 600 opens core objects corresponding to transaction manager 605 on a first device and SRV 234 (FIG. 2) opens core objects corresponding to transaction manager 635 on a second device, a "staging" phase "705 begins with 705 being sent to each RM in the transaction a" prepare "order from a corresponding transaction manager. Thus warned, the RM prepares 710 by synthesizing resource data into a durable state so that data in the respective resources is capable of being "delivered" or "rolled back". Upon preparation, the RM transmits a confirmation message 715 to the corresponding transaction manager TX.

[0060] A fase de "entrega" 720 é executada quando de uma resolução da transação, por meio da qual o TX do gerenciador de transação transmite 725 um resultado de transação de "entregue" ou de "cancela / revertido" para cada RM associado. O RM então grava o resultado em um registro de eventos associado e os dados de recurso subjacentes são entregues ou revertidos, de acordo com o resultado da transação. As modalidades alternativas podem permitir que alistamentos voláteis para os quais os dados para a transação não são duráveis e portanto os dados não são registrados ou recuperados.The "delivery" phase 720 is performed upon a transaction resolution whereby the transaction manager TX transmits a 725 "delivered" or "cancel / reverse" transaction result for each associated RM . RM then writes the result to an associated event log and the underlying resource data is delivered or rolled back according to the result of the transaction. Alternative modalities may allow volatile lists for which data for the transaction is not durable and therefore data is not recorded or retrieved.

[0061] O gerenciamento de transação no nível núcleo pode ser implementado por utilizar interfaces de programa de aplicação (API) que são aplicáveis às arquiteturas de sistema incluindo, mas não limitadas à interface de programação de aplicação do Microsoft® Win32® e ao sistema operacional Microsoft® Windows®. As APIs descritas aqui dentro são expostas via uma interface baseada em identificador, um "identificador" referenciando o objeto pretendido pela API. Adicionalmente, a menos que a operação assíncrona seja explicitamente requi- sitada, as operações nos objetos núcleo respectivos, particularmente no TX e no RMO, são síncronas. Ainda adicionalmente, as operações correspondendo à diferentes modalidades de uma transação podem ser implementadas por várias combinações de uma ou mais das APIs descritas aqui dentro. Isto é, algumas modalidades podem utilizar todas as APIs descritas aqui dentro, enquanto outras modalidades podem utilizar várias combinações das mesmas.Core level transaction management can be implemented by using application program interfaces (APIs) that are applicable to system architectures including, but not limited to, the Microsoft® Win32® application programming interface and operating system. Microsoft® Windows®. The APIs described here are exposed via an identifier-based interface, an "identifier" referencing the intended object of the API. In addition, unless asynchronous operation is explicitly required, operations on the respective core objects, particularly TX and RMO, are synchronous. Still further, operations corresponding to different modalities of a transaction may be implemented by various combinations of one or more of the APIs described herein. That is, some embodiments may utilize all of the APIs described herein, while other embodiments may utilize various combinations thereof.

[0062] As APIs para implementar operações em objetos núcleo TX e uma descrição correspondente da funcionalidade da API são proporcionadas abaixo (descrições mais detalhadas das rotinas associadas também são proporcionadas adicionalmente abaixo): PreprepareEnlistment: também conhecido como processamento de "Fase 0", requisita que o TX transmita uma mensagem de preparo anterior para todos os RMs associados; • PrepareEnlistment: requisita que o TX transmita uma requisição de preparo para todos os RMs incluídos. • CreateTransaction: abre um novo TX; • OpenTransaction: abre um TX existente; • CommitTransaction: requisita que o TX seja entregue; • RolIbackTransaction: requisita que o TX cancele ou reverta a transação; • SavePointTransaction: requisita que o TX salve o estado da transação; • GetTransactionlnfo: recupera informação sobre o TX; e • SetTransactionlnfo: estabelece informação sobre o TX.APIs for implementing TX core object operations and a corresponding description of API functionality are provided below (more detailed descriptions of the associated routines are also provided below): PreprepareEnlistment: Also known as "Phase 0" processing, requests that TX transmits a previous staging message to all associated RMs; • PrepareEnlistment: Requests TX to transmit a prepare request to all included RMs. • CreateTransaction: opens a new TX; • OpenTransaction: opens an existing TX; • CommitTransaction: requests that TX be delivered; • RolIbackTransaction: Require TX to cancel or reverse the transaction. • SavePointTransaction: Require TX to save the transaction state; • GetTransactionlnfo: retrieves information about TX; and • SetTransactionlnfo: establishes TX information.

[0063] As APIs utilizadas para implementar operações em objetos núcleo RMO e uma descrição correspondente da funcionalidade da API são proporcionadas abaixo (as descrições mais detalhadas das rotinas associadas também são proporcionadas adicionalmente abaixo): CreateResourceManager: cria um novo RMO que represen- ta um recurso;The APIs used to implement operations on RMO core objects and a corresponding description of API functionality are provided below (more detailed descriptions of the associated routines are also provided below): CreateResourceManager: creates a new RMO that represents a resource;

OpenResourceManager: abre um RMO existente; DestroyResourceManager: destrói o RMO, assim sinteti-zando-o de forma não persistente;OpenResourceManager: Opens an existing RMO; DestroyResourceManager: Destroys the RMO, thus synthesizing it non-persistently;

GetResourceManagerlnfo: recupera informação sobre o RMO;GetResourceManagerlnfo: Retrieves information about the RMO;

SetResourceManagerlnfo: estabelece informação sobre o RMO;SetResourceManagerlnfo: Set information about the RMO;

CreateEnlistment: causa que o RMO junte-se à uma transação e recupere notificações relacionadas; e GetNotificationResourceManager: consulta e retorna uma notificação RM disponível.CreateEnlistment: Causes RMO to join a transaction and retrieve related notifications; and GetNotificationResourceManager: queries and returns an available RM notification.

[0064] As APIs utilizadas para implementar operações em objetos núcleo TX por um objeto núcleo RMO após juntar-se à uma transação e uma descrição correspondente da funcionalidade da API são proporcionadas abaixo (descrições mais detalhadas das rotinas associadas também são proporcionadas adicionalmente abaixo): • PrePrepareComplete: indica que o RM completou a preparação anterior como requisitado por um gerenciador de transação correspondente; • PrepareComplete: indica que o RM completou a preparação de uma transação como requisitado pelo gerenciador de transação correspondente; • RolIbackComplete: indica que o RM completou a reversão do trabalho de transação executado como requisitado pelo gerenciador de transação correspondente; e • CommitComplete: indica que o RM completou a entrega do trabalho de transação como requisitado pelo gerenciador de transação correspondente.APIs used to implement operations on TX core objects by an RMO core object after joining a transaction and a corresponding description of API functionality are provided below (more detailed descriptions of the associated routines are also provided below): PrePrepareComplete: Indicates that RM has completed the previous preparation as requested by a corresponding transaction manager. • PrepareComplete: Indicates that RM has completed preparing a transaction as requested by the corresponding transaction manager; • RolIbackComplete: Indicates that RM has completed the rollback of transaction work performed as requested by the corresponding transaction manager; and • CommitComplete: Indicates that RM has completed the delivery of transaction work as requested by the corresponding transaction manager.

[0065] Infelizmente, as APIs associadas com objetos núcleo TX, RMO e ΕΝ utilizadas para implementar o gerenciamento de transação podem expor um ou mais dos objetos núcleo à vários ataques de segurança. Por exemplo, um RM malicioso ou inválido podería se incluir em uma transação para causar ataques de negação de serviço por nunca responder à chamadas de função ou, alternativamente, por forçar cancelamentos de transação. Portanto, um exemplo ilustrativo adicional, também referindo-se à FIG. 6, é direcionado para uma transação distribuída segura, de nível núcleo.Unfortunately, the APIs associated with TX, RMO, and núcleo core objects used to implement transaction management can expose one or more of the core objects to multiple security attacks. For example, a malicious or invalid RM could be included in a transaction to cause denial of service attacks by never responding to function calls or, alternatively, forcing transaction cancellations. Therefore, an additional illustrative example, also referring to FIG. 6, is directed to a secure, core-level distributed transaction.

[0066] A modalidade ilustrativas da FIG. 6 adicionalmente proporciona uma solução de segurança para objetos núcleo vulneráveis por aplicar um descritor de segurança, o qual pode incluir uma lista de controle de acesso (ACL), para pelo menos um dos respectivos objetos núcleo.The illustrative embodiment of FIG. 6 further provides a security solution for vulnerable core objects by applying a security descriptor, which may include an access control list (ACL), for at least one of their respective core objects.

[0067] Em um primeiro dispositivo, a ACL 660 é aplicado junto ao TX 610, a ACL 665 é aplicado junto ao RMO 615 e a ACL 670 é aplicado junto ao EN 620. Em um segundo dispositivo, a ACL 675 é aplicado ao TX 640, a ACL 680 é aplicado ao RMO 645 e a ACL 685 é aplicado junto ao EN 650.In a first device, ACL 660 is applied next to TX 610, ACL 665 is applied next to RMO 615 and ACL 670 is applied next to EN 620. In a second device, ACL 675 is applied to TX 640, ACL 680 is applied to RMO 645 and ACL 685 is applied to EN 650.

[0068] Uma ACL define os "direitos" que um usuário particular ou grupo de usuários é permitido ou negado de exercer em um objeto particular. De forma mais específica, como apresentado no ACL 810 ilustrativo da FIG. 8, um ACL que é aplicado ou ligado com um objeto núcleo inclui pelo menos a entrada de controle de acesso (ACE) que compreende um identificador de segurança correspondente (SID) e um conjunto correspondente de direitos. As entradas ACE 1 à 12 na FIG. 8 incluem, respectivamente, os SIDs correspondentes 1 até 12 e os RIGHTs correspondentes 1 até 12.[0068] An ACL defines the "rights" that a particular user or group of users are allowed or denied to exercise on a particular object. More specifically, as shown in illustrative ACL 810 of FIG. 8, an ACL that is applied to or bound with a core object includes at least the access control entry (ACE) comprising a corresponding security identifier (SID) and a corresponding set of rights. The ACE entries 1 through 12 in FIG. 8 include, respectively, corresponding SIDs 1 to 12 and corresponding RIGHTs 1 to 12.

[0069] Os SIDs 1 até 12 identificam um usuário ou um grupo de usuário que podem tentar implementar uma operação, ou uma série de operações, no objeto núcleo junto ao qual a ACL está aplicado. Os RIGHTs 1 até 12 especificam uma operação ou séries de operações capazes de serem executadas no objeto núcleo respectivo pelo usuário ou grupo de usuários identificado pelo SID e adicionalmente especificam a acessibilidade de tal operação ou operações para o usuário ou grupo de usuários identificado. Isto é, os RIGHTs 1 até 12 podem indicar que o usuário ou o grupo de usuários identificado é permitido de executar uma operação especificada ou que o usuário ou grupo de usuários identificado está proibido de executar uma operação especificada.[0069] SIDs 1 through 12 identify a user or user group that may attempt to implement an operation, or series of operations, on the core object to which the ACL is applied. RIGHTs 1 through 12 specify an operation or series of operations capable of being performed on the respective core object by the user or user group identified by the SID and further specify the accessibility of such operation or operations to the identified user or user group. That is, RIGHTs 1 through 12 may indicate that the identified user or user group is allowed to perform a specified operation or that the identified user or user group is prohibited from performing a specified operation.

[0070] O que se segue é uma lista de operações ilustrativas que podem ser especificadas pelos RIGHTs 1 até 12 em uma ACL aplicada junto ao TX, seguida por uma descrição da funcionalidade da operação. Os RIGHTs 1 até 12 adicionalmente especificam que a operação é permitida ou negada no TX para o usuário ou grupo de usuários identificado pelo SID correspondente. • TRANSACTION_QUERY_INFORMATION: para obter informações sobre o TX; • TRANSACTION_SET_INFORMATION: para estabelecer informações sobre o TX; • TRANSACTION_ENLIST: para incluir no TX na transação; • TRANSACTION_COMMIT: para sintetizar todas as atualizações de dados associadas com o TX duráveis; • TRANSACTION_ROLLBACK: para cancelar, isto é, reverter a operação no TX; • TRANSACTION PROPOGATE: para transmitir dados a partir do TX para outro objeto; • TRANSACTION SAVEPOINT: para salvar o ponto corrente da transação; e • TRANSACTION MARSHAL: para transmitir dados com respeito à transação para outro dispositivo.The following is a list of illustrative operations that can be specified by RIGHTs 1 through 12 on an TX-applied ACL, followed by a description of the operation's functionality. RIGHTs 1 through 12 additionally specify that the operation is allowed or denied in TX for the user or user group identified by the corresponding SID. • TRANSACTION_QUERY_INFORMATION: for TX information; • TRANSACTION_SET_INFORMATION: to establish TX information; • TRANSACTION_ENLIST: to include in TX in the transaction; • TRANSACTION_COMMIT: to synthesize all data updates associated with durable TX; • TRANSACTION_ROLLBACK: to cancel, ie reverse the operation on TX; • TRANSACTION PROPOGATE: to transmit data from TX to another object; • TRANSACTION SAVEPOINT: to save the current transaction point; and • TRANSACTION MARSHAL: to transmit data regarding the transaction to another device.

[0071] O que se segue é uma lista de operações ilustrativas que podem ser especificadas pelos RIGHTs 1 até 12 em uma ACL aplicada junto ao RMO, seguido por uma descrição da funcionalidade da operação. Os RIGHTs 1 até 2 adicionalmente especificam que a operação é permitida ou negada no RMO para o usuário ou grupo de usuários identificado pelo SID correspondente. • RESOURCEMANAGER_QUERY_INFORMATION: para obter informações sobre o RMO; • RESOURCEMANAGER_SET_INFORMATION: para estabelecer informações sobre o RMO; • RESOURCEMANAGER_RECOVER: para determinar o estado de uma transação no momento da falha da transação; • RESOURCEMANAGER_ENLIST: para incluir o RMO em uma transação; • RESOURCEMANAGER_GET_NOTIFICATION: para receber notificação quando da resolução da transação a partir do gerenciador de transação; • RESOURCEMANAGER_REGISTER_PROTOCOL: para registrar um protocolo que o RMO suporta na transação; e • RESOURCEMANAGER_COMPLETE_PROPOGATION: para estabelecer o recurso de acordo com a resolução da transação;The following is a list of illustrative operations that can be specified by RIGHTs 1 through 12 in an ACL applied to the RMO, followed by a description of the functionality of the operation. RIGHTs 1 through 2 additionally specify that the operation is allowed or denied in the RMO for the user or user group identified by the corresponding SID. • RESOURCEMANAGER_QUERY_INFORMATION: for information about the RMO; • RESOURCEMANAGER_SET_INFORMATION: to establish information about the RMO; • RESOURCEMANAGER_RECOVER: to determine the state of a transaction at the time of transaction failure; • RESOURCEMANAGER_ENLIST: to include the RMO in a transaction; • RESOURCEMANAGER_GET_NOTIFICATION: to receive notification upon transaction resolution from the transaction manager; • RESOURCEMANAGER_REGISTER_PROTOCOL: to register a protocol that RMO supports in the transaction; and • RESOURCEMANAGER_COMPLETE_PROPOGATION: to establish the appeal according to the resolution of the transaction;

[0072] O que se segue é uma lista de operações ilustrativas que podem ser especificadas pelos RIGHTs 1 até 12 em uma ACL aplicada junto ao EN, seguida por uma descrição da funcionalidade da operação. Os RIGHTs 1 até 12 adicionalmente especificam que a operação é permitida ou negada no EN para o usuário ou grupo de usuários identificado pelo SID correspondente. • ENLISTMENT_QUERY_INFORMATION: para obter informações sobre o EN; • ENLISTMENT_SET_INFORMATION: para estabelecer in- formações sobre o EN; • ENLISTMENT_RECOVER: para determinar o estado da inclusão no momento da falha da transação. • ENLISTMENT_REFERENCE: para obter e referenciar (ou retirar referência de) uma chave de inclusão; • ENLISTMENT_SUBORDINATE_RIGHTS: para reverter a transação e para responder à notificações; e • ENLISTMENT_SUPERIOR_RIGHTS: para executar operações que um gerenciador de transação superior executaria; tal como iniciar uma operação de preparo anterior, preparo ou de reversão superior em uma transação.The following is a list of illustrative operations that can be specified by RIGHTs 1 through 12 in an ACL applied to the EN, followed by a description of the functionality of the operation. RIGHTs 1 through 12 further specify that the operation is allowed or denied in EN for the user or user group identified by the corresponding SID. • ENLISTMENT_QUERY_INFORMATION: for information about EN; • ENLISTMENT_SET_INFORMATION: to establish information about EN; • ENLISTMENT_RECOVER: To determine the state of inclusion at the time of transaction failure. • ENLISTMENT_REFERENCE: to get and reference (or unselect) an include key; • ENLISTMENT_SUBORDINATE_RIGHTS: to roll back the transaction and to respond to notifications; and • ENLISTMENT_SUPERIOR_RIGHTS: to perform operations that a higher transaction manager would perform; such as initiating a previous prepare, prepare, or reverse rollback operation on a transaction.

[0073] Por conseqüência, cada um dos objetos núcleo TX, RMO e EN pode possuir uma ACL respectivamente aplicado ao mesmo. Assim, quando uma API tenta iniciar uma operação em um respectivo dos objetos núcleo, a ACL deve ser respeitada por determinar se a operação é permitida ou negada para o usuário ou grupo de usuários a partir do qual a API se origina.Accordingly, each of the TX, RMO and EN core objects may have an ACL respectively applied to it. Thus, when an API attempts to initiate an operation on a respective core object, the ACL must be respected in determining whether the operation is allowed or denied to the user or user group from which the API originates.

[0074] De forma mais específica, quando um identificador é aberto para executar uma operação, um usuário ou grupo de usuários correspondendo à API é verificado junto com o SID na ACL; uma lista de operações permitidas é gerada; e a operação especificada pela API é verificada para as operações permitidas para o SID em um dado identificador.More specifically, when an identifier is opened to perform an operation, a user or user group matching the API is checked along with the SID in the ACL; a list of allowed operations is generated; and the operation specified by the API is checked for operations allowed for the SID on a given identifier.

[0075] As modalidades alternativas para garantir o gerenciamento de transação entre os objetos núcleo e reforçar os parâmetros de segurança, incluem aplicar descritores de segurança para objetos núcleo que podem participar em uma transação de acordo com o modelo de segurança para o sistema operacional Microsoft® Windows®.Alternative ways to ensure transaction management between core objects and enforce security parameters include applying security descriptors to core objects that can participate in a transaction according to the security model for the Microsoft® operating system. Windows®.

[0076] Como relatado acima, as APIs são expostas como uma interface baseada em identificador, a qual é utilizada para implementar o modelo de segurança. O que se segue inclui uma descrição mais detalhada das APIs, listadas acima, para implementar operações nos objetos núcleo TX. As descrições incluem uma descrição da rotina, dos argumentos correspondentes e dos valores de retorno PreprepareEnlistment (INPHANDLETransactionHandle; INPHANDLEResourceManagerHandle).As reported above, APIs are exposed as an identifier-based interface, which is used to implement the security model. The following includes a more detailed description of the APIs, listed above, for implementing operations on TX core objects. Descriptions include a description of the routine, its corresponding arguments, and return values PreprepareEnlistment (INPHANDLETransactionHandle; INPHANDLEResourceManagerHandle).

[0077] Esta rotina requisita que uma Transação seja "preparada anteriormente" por emitir uma requisição de Preparo Anterior para todos os RMs associados. O Preparo Anterior permite à um RM com propriedades de armazenamento em memória cache uma oportunidade para atualizar suas memórias intermediárias, possivelmente para outros RMs, antes da Transação entrar no estado Preparado, no qual os RMs à jusante não podem mais aceitar alterações.This routine requires a Transaction to be "pre-prepared" by issuing a Pre-Prepare request to all associated RMs. Pre-Staging gives an RM with caching properties an opportunity to update its buffer memories, possibly to other RMs, before the Transaction enters the Staged state, in which downstream RMs can no longer accept changes.

[0078] Se esta rotina não for chamada e uma transação participante requisitou o processamento PhaseO, as requisições de Preparo Anterior são emitidas à medida que requisitadas quando um Preparo é recebido. Entretanto, algumas configurações que incluem RMs do tipo de memória cache podem causar reversões de transação desnecessárias em cenários distribuídos se não existir nenhum PreprepareEnlistment.If this routine is not called and a participating transaction has requested PhaseO processing, Previous Staging requests are issued as requested when a Staging is received. However, some configurations that include caching type RMs may cause unnecessary transaction rollbacks in distributed scenarios if there is no PreprepareEnlistment.

Argumentos: TransactionHandle: Fornece um identificador indicando a Transação a ser preparada anteriormente;Arguments: TransactionHandle: Provides an identifier indicating the Transaction to be prepared earlier;

ResourceManagerHandle: Fornece um identificador para o Superior/TM-CRM que está preparando anteriormente a transação. Somente este Superior-TM/CRM estará apto a chamar PrepareEnlis-tment, SuperiorCommitTransaction e SuperiorRollbackTransaction nesta transação.ResourceManagerHandle: Provides an identifier for the Superior / TM-CRM that is previously preparing the transaction. Only this Superior-TM / CRM will be able to call PrepareEnlis-tment, SuperiorCommitTransaction, and SuperiorRollbackTransaction on this transaction.

Valor de retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLESTATUS_INVALID_HANDLE

STATUSJNSUFFICIENTRESOURCESSTATUSJNSUFFICIENTRESOURCES

ST ATUS_TM_T 00_LATEST ATUS_TM_T 00_LATE

PrepareEnlistment (INPHANDLETransactionHandle, INPHANDLEResourceManagerHandle);PrepareEnlistment (INPHANDLETransactionHandle, INPHANDLEResourceManagerHandle);

[0079] Esta rotina requisita que uma Transação seja "preparada" por emitir uma requisição de Preparo para todos os seus ResourceMa-nagers associados. Esta requisição começa com o protocolo de entrega de duas fases.This routine requires a Transaction to be "prepared" by issuing a Prepare request to all its associated ResourceMa-nagers. This request begins with the two-phase delivery protocol.

[0080] Um participante da transação emitindo o PrepareEnlistment sintetiza o objeto da transação em um estado durável que irá sobreviver às falhas do sistema ou da aplicação; tal participante executa a recuperação na transação após qualquer tipo de falha de modo a distribuir um resultado. A falha para preencher este requerimento pode resultar em perdas de recurso, bem como em resultados de transação inconsistentes.[0080] A transaction participant issuing PrepareEnlistment synthesizes the transaction object in a durable state that will survive system or application failures; Such a participant performs recovery in the transaction after any type of failure in order to distribute a result. Failure to fulfill this requirement may result in resource loss as well as inconsistent transaction results.

Argumentos: TransactionHandle: Fornece um identificador para a Transação ser preparada; e ResourceManagerHandle: Fornece um identificador para um TM que está preparando a transação. Se a transação foi preparada anteriormente (via uma chamada ao PreprepareEnlistment), então o ResourceManagerHandle se associa com o Superior-TM/CRM que foi utilizado na chamada ao PreprepareEnlistment. Adicionalmente, somente o Superior-TM/CRM que chama esta API será permitido de chamar SuperiorCommitTransaction e SuperiorRollbackTransaction nesta transação.Arguments: TransactionHandle: Provides an identifier for the Transaction to be prepared; e ResourceManagerHandle: Provides an identifier for a TM that is preparing the transaction. If the transaction was previously prepared (via a PreprepareEnlistment call), then ResourceManagerHandle associates with the Superior-TM / CRM that was used in the PreprepareEnlistment call. Additionally, only Superior-TM / CRM calling this API will be allowed to call SuperiorCommitTransaction and SuperiorRollbackTransaction in this transaction.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLESTATUS_INVALID_HANDLE

STATUS_INSUFFICIENT_RESOURCESSTATUS_INSUFFICIENT_RESOURCES

STATUS_TM_T 00_LATESTATUS_TM_T 00_LATE

STATUS_RM_NOT_RECOVERABLESTATUS_RM_NOT_RECOVERABLE

CreateT ransaction (OUT PHANDLETransactionHandle, IN ULONGDesiredAccess OPTIONAL; IN POBJECT_ATTRIBUTESObjectAttributes OPTIONAL; IN ULONGCreateOptions OPTIONAL; IN PHANDLEResourceManagerHandle OPTIONAL; IN NOTIFICATION_MASKNotificationMask OPTIONAL; IN LPVOlDTransactionKey OPTIONAL).CreateT ransaction (OUT PHANDLETransactionHandle, IN ULONGDesiredAccess OPTIONAL; IN POBJECT_ATTRIBUTESObjectAttributes OPTIONAL; IN ULONGCreateOptions OPTIONAL; IN PHANDLEResourceManagerHandle OPTIONAL; IN NOTIFICATION_MASKNotificationMask OPTIONAL; IN LPVOlD.

[0081] Esta rotina cria um novo objeto Transaction e retorna um identificador para o novo objeto.[0081] This routine creates a new Transaction object and returns an identifier for the new object.

[0082] De forma alternativa (caso o parâmetro ResourceManage-rHandle seja especificado), esta rotina executa uma operação "Join" no Transaction após ele ser de forma bem sucedida criado.Alternatively (if the ResourceManage-rHandle parameter is specified), this routine performs a "Join" operation on Transaction after it is successfully created.

[0083] Os clientes fecham o identificador de transação utilizando a API CloseHandle. Se o último identificador da transação se fechar sem ninguém chamando CommitTransaction na transação, então a transação é implicitamente revertida.Clients close the transaction identifier using the CloseHandle API. If the last transaction identifier closes without anyone calling CommitTransaction on the transaction, then the transaction is implicitly rolled back.

Argumentos: TransactionHandle: Fornece um ponteiro para a localização que irá receber um identificador para a nova Transaction;Arguments: TransactionHandle: Provides a pointer to the location that will receive a handle to the new Transaction;

DesiredAccess: Fornece a máscara especificando o nível de acesso desejado.DesiredAccess: Provides the mask specifying the desired access level.

As escolhas de máscara de acesso válidas são: SYNCHRONIZEPode executar operações de sincronização neste identificador TRANSACTION COMMITPode utilizar este identificador para entregar a transação TRANSACTION PREPAREPode utilizar este identificador para entregar a transação TRANSACTION ROLLBACKPode utilizar este identificador para cancelar a transação TRANSACTION SAVEPOINTPode utilizar este identificador para criar pontos de salvamento para a transação TRANSACTION JOINPode utilizar este identificador para unir esta transação como um RM TRANSACTIONREADATTRIBUTESPode ler atributos associados com a transação TRANSACTION WRITE ATTRIBUTESPode escrever atributos associados com a transação;Valid access mask choices are: SYNCHRONIZEPYou can perform synchronization operations on this handle TRANSACTION COMMITYou can use this handle to deliver the transaction TRANSACTION PREPAREYou can use this handle to cancel the transaction TRANSACTION SAVEPOINTPYou can use this handle to create savepoints for transaction TRANSACTION JOINYou can use this identifier to join this transaction as an RM TRANSACTIONREADATTRIBUTESPode read attributes associated with transaction TRANSACTION WRITE ATTRIBUTESPode write attributes associated with the transaction;

ObjectAttributes: Fornece um ponteiro para uma estrutura de atributos de objeto opcional;ObjectAttributes: Provides a pointer to an optional object attribute structure;

CreateOptionFornece indicadores de transação opcionais. Escolhas de indicador create válidas incluem: TRANSACTIONCREATEPRESUMEDNOTHINGCria uma transação "nada presumido".CreateOptionProvides optional transaction indicators. Valid create indicator choices include: TRANSACTIONCREATEPRESUMEDNOTHINGCreates an "not assumed" transaction.

ResourceManagerHandle: Fornece um identificador para o ResourceManager que recebe notificações a cerca de uma transação especificada;ResourceManagerHandle: Provides an identifier for ResourceManager that receives notifications about a specified transaction;

NotificationMask: Especifica as notificações que este Re-sourceManager gostaria de receber com respeito à este Transaction; e TransactionKey: Especifica um valor de ponteiro opaco que o RM gostaria de receber junto com quaisquer modificações para este Transaction. O RM pode utilizar isto para associar notificações com algum objeto no espaço de endereço do RM, assim prevenindo a necessidade de executar uma busca cada vez que uma notificação ocorrer.NotificationMask: Specifies the notifications this Re-sourceManager would like to receive regarding this Transaction; e TransactionKey: Specifies an opaque pointer value that RM would like to receive along with any modifications to this Transaction. RM can use this to associate notifications with some object in the RM address space, thus preventing the need to perform a search each time a notification occurs.

Valor de Retorno: STATUSSUCCESSReturn Value: STATUSSUCCESS

STATUSJ N VALI D_PARAM ETERSTATUSJ N VALI D_PARAM ETER

STATUS_OBJECT_NAME_COLLISIONSTATUS_OBJECT_NAME_COLLISION

STATU S_0 B J ECT_N AM E_l N VALI DSTATU S_0 B J ECT_N AM E_l N VALI D

STATUS_PRIVILEGE_NOT_HELDSTATUS_PRIVILEGE_NOT_HELD

STATUS_INSUFFICIENT_RESOURCESSTATUS_INSUFFICIENT_RESOURCES

OpenTransaction (OUT PHANDLETransactionHandle, INACCESS_MASKDesiredAccess, INPOBJECT_ATTRIBUTESObjectAttributes, INPHANDLEResourceManagerHandle optional, INNOTIFICATIONMASKNotificationMask optional, INLPVOlDTransactionKey optional);OpenTransaction (OUT PHANDLETransactionHandle, INACCESS_MASKDesiredAccess, INPOBJECT_ATTRIBUTESObjectAttributes, INPHANDLEResourceManagerHandle optional, INNOTIFICATIONMASKNotificationMask optional, INLPVOlDTransactionKey optional);

[0084] Esta rotina procura por um objeto Transaction existente e retorna um identificador para o Transaction. O chamador especifica uma representação de cadeia de caracteres de uma GUID em um campo ObjectName de ObjectAttributes.[0084] This routine looks for an existing Transaction object and returns an identifier for Transaction. The caller specifies a string representation of a GUID in an ObjectName field of ObjectAttributes.

[0085] De forma alternativa (caso o parâmetro ResourceManage-rHandle seja especificado), esta rotina também executa uma operação "Join" no Transaction após ele ser aberto.Alternatively (if the ResourceManage-rHandle parameter is specified), this routine also performs a "Join" operation on Transaction after it is opened.

[0086] Os clientes fecham o identificador da transação utilizando uma API CloseHandle. Se o último identificador da transação fechar sem ninguém chamando CommitTransaction na transação, então a transação é implicitamente revertida.Clients close the transaction identifier using a CloseHandle API. If the last transaction identifier closes without anyone calling CommitTransaction on the transaction, then the transaction is implicitly rolled back.

Argumentos: TransactionHandle: fornece um ponteiro para a localização que irá receber um identificador para a Transaction se a operação de abertura for bem sucedida;Arguments: TransactionHandle: Provides a pointer to the location that will receive a handle to Transaction if the open operation is successful;

DesiredAccess: Fornece a máscara especificando o nível desejado de acesso;DesiredAccess: Provides the mask specifying the desired level of access;

ObjectAttributes: Fornece um ponteiro para uma estrutura de atributos de objeto opcional;ObjectAttributes: Provides a pointer to an optional object attribute structure;

ResourceManagerHandle: Fornece um identificador para o Resource-Manager que recebe notificações a cerca do Transaction especificado; NotificationMask: Especifica as notificações que este ResourceMana-ger pode receber com respeito à este Transaction; e TransactionKey: Opcionalmente especifica um valor de ponteiro opaco que o RM gostaria de receber junto com quaisquer modificações para este Transaction. O RM pode utilizar isto para associar notificações com algum objeto no espaço de endereço do RM, assim prevenindo a necessidade de executar uma busca cada vez que uma notificação ocorrer.ResourceManagerHandle: Provides an identifier for Resource-Manager that receives notifications about the specified Transaction; NotificationMask: Specifies the notifications this ResourceMana-ger can receive regarding this Transaction; e TransactionKey: Optionally specifies an opaque pointer value that RM would like to receive along with any modifications to this Transaction. RM can use this to associate notifications with some object in the RM address space, thus preventing the need to perform a search each time a notification occurs.

Valor de Retorno: STATUS_SUCCESS STATUS_INVALID_PARAMETER STATUS_OB J ECT_N AM E_l N VALID STATUS_OB J ECT_N AM E_NOT_FOU N DReturn Value: STATUS_SUCCESS STATUS_INVALID_PARAMETER STATUS_OB J ECT_N AM E_l N VALID STATUS_OB J ECT_N AM E_NOT_FOU N D

STATUSOBJ ECT_PATH_SYNTAX_BADSTATUSOBJ ECT_PATH_SYNTAX_BAD

STATUS_PRIVILEGE_NOT_HELDSTATUS_PRIVILEGE_NOT_HELD

STATUS_INSUFFICIENT_RESOURCESSTATUS_INSUFFICIENT_RESOURCES

CommitT ransaction (INPHANDLETransactionHandle INULONGCommitOptionsOptional);CommitT ransaction (INPHANDLETransactionHandle INULONGCommitOptionsOptional);

[0087] Esta rotina requisita que o Transaction associado com o TransactionHandle seja entregue. Qualquer identificador de transação que foi aberto ou criado pode ser entregue com o acesso Transac-tion_Commit Desejado. Desde que não exista restrição afirmando que somente o criador de uma transação é permitido de entregar a mesma.This routine requires that the Transaction associated with the TransactionHandle be delivered. Any transaction identifier that has been opened or created can be delivered with the desired Transaction_Commit access. As long as there is no restriction stating that only the creator of a transaction is allowed to deliver it.

[0088] Se o Transaction em questão não emitiu anteriormente uma requisição PrepareEnlistment, então um protocolo de entrega de duas fases pode ser iniciado em todos os RMs incluídos. Esta chamada pode ser vista como uma requisição de entrega de fase única sendo emitida pelo cliente.[0088] If the Transaction in question has not previously issued a PrepareEnlistment request, then a two-phase delivery protocol may be started on all included RMs. This call can be viewed as a single phase delivery request being issued by the customer.

[0089] Este roteamento não é chamado se o Transaction tiver sido anteriormente preparado via o PrepareEnlistment. Somente um RM que chamou o PrepareEnlistment pode resolver o estado da transação utilizando o SuperiorCommitTransaction.[0089] This routing is not called if Transaction was previously prepared via PrepareEnlistment. Only an RM that called PrepareEnlistment can resolve the transaction state using SuperiorCommitTransaction.

Argumentos: TransactionHandle: fornece um identificador indicando o Transaction a ser entregue; e CommitOptions: O Transaction COMMIT RETAINING será entregue. Valor de Retorno: STATUS_SUCCESSArguments: TransactionHandle: Provides an identifier indicating the Transaction to be delivered; e CommitOptions: The Transaction COMMIT RETAINING will be delivered. Return Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLESTATUS_INVALID_HANDLE

STATUS_INSUFFICIENT_RESOURCESSTATUS_INSUFFICIENT_RESOURCES

STATUS_TM_TRANSACTION_ABORTEDSTATUS_TM_TRANSACTION_ABORTED

RolIbackT ransaction (INPHANDLETransactionHandle IN SAVEPOINT SavePoi ntOptional, INROLLBACK_REASON RolIbackReason Optional);RolIbackT ransaction (INPHANDLETransactionHandle IN SAVEPOINT SavePoIntOptional, INROLLBACK_REASON RolIbackReason Optional);

Esta rotina requisita que o Transaction associado com o Transactio-nHandle seja revertido. A reversão pode ser uma reversão parcial caso o SavePoint opcional seja especificado e seja um ponto de salvamento válido. Um argumento SavePoint NULL indica que o Transaction deve ser completamente revertido ou cancelado. Uma estrutura Roll-backReason opcional pode ser fornecida; esta será retida no objeto Transaction e pode ser recuperada pelos participantes da transação interessados via uma chamada para GetlnformationTransaction. Argumentos: TransactionHandle: Fornece um identificador indicando que o Transaction seja revertido;This routine requires that the Transaction associated with Transactio-nHandle be reversed. Rollback can be a partial rollback if the optional SavePoint is specified and is a valid savepoint. A SavePoint NULL argument indicates that Transaction must be completely reversed or canceled. An optional Roll-backReason structure can be provided; it will be retained in the Transaction object and can be retrieved by interested transaction participants via a call to GetlnformationTransaction. Arguments: TransactionHandle: Provides a handle indicating that the Transaction is reversed;

SavePoint: Fornece um nome do SavePoint, indicando até quanto um estado de uma transação deve ser revertido; e RolIbackReason: Fornece uma razão da reversão Valores de Retorno: STATUS_SUCCESSSavePoint: Provides a SavePoint name indicating how far a state of a transaction should be rolled back; and RolIbackReason: Provides a Reason for Rollback Return Values: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUSJ N VALI D_H AN DLESTATUSJ N VALI D_H AN DLE

STATUS_INSUFFICIENT_RESOURCESSTATUS_INSUFFICIENT_RESOURCES

STATUS_TM_TRANSACTION_COMMITTEDSTATUS_TM_TRANSACTION_COMMITTED

SavePointT ransaction (INPHANDLETransactionHandle, IN U LON G Savepoi ntFlagsOptional, OUT LPSAVEPOINTSavePoint);SavePointT ransaction (INPHANDLETransactionHandle, IN U LON G Savepoi ntFlagsOptional, OUT LPSAVEPOINTSavePoint);

[0090] Esta rotina requisita que um "ponto de salvamento" seja gerado para um Transaction associado com TransactionHandle; este pon- to de salvamento é utilizado como um alvo para requisições de reversão subsequentes.[0090] This routine requires that a "savepoint" be generated for a Transaction associated with TransactionHandle; This save point is used as a target for subsequent rollback requests.

Argumentos: TransactionHandle: Fornece um identificador indicando o Transaction para o qual um SavePoint deve ser estabelecido;Arguments: TransactionHandle: Provides an identifier indicating the Transaction for which a SavePoint should be established;

SavepointFlags: opcionalmente fornece um conjunto de indicadores que afetam a geração do ponto de salvamento; e SavePoint: Fornece um ponteiro para uma localização onde um identificador do Savepoint é armazenado.SavepointFlags: Optionally provides a set of indicators that affect savepoint generation; e SavePoint: Provides a pointer to a location where a Savepoint identifier is stored.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLESTATUS_INVALID_HANDLE

STATUS_INSUFFICIENT_RESOURCESSTATUS_INSUFFICIENT_RESOURCES

STATUS_TM_TRANSACTION_COMMITTEDSTATUS_TM_TRANSACTION_COMMITTED

STATUS_TM_TRANSACTION_ABORTEDSTATUS_TM_TRANSACTION_ABORTED

Query InformationT ransaction (INHANDLETransactionHandle, INTRANSACTIONINFORMATIONCLASSTransactionln- formationClass, OUT PVOlDTransactionlnformation, IN ULONGTransactionlnformationLength, OUTPULONGReturnLength Optional);Query Information Transaction (INHANDLETransactionHandle, INTRANSACTIONINFORMATIONCLASSTransactionlnformationClass, OUT PVOlDTransactionlnformation, IN ULONGTransactionlnformationLength, OUTPULONGReturnLength Optional);

[0091] Esta rotina retorna informações requisitadas sobre o objeto Transaction representado por TransactionHandle.This routine returns requested information about the Transaction object represented by TransactionHandle.

Argumentos: TransactionHandle: Fornece um identificador indicando uma Transaction para a qual a informação está sendo requisitada;Arguments: TransactionHandle: Provides an identifier indicating a Transaction for which information is being requested;

TransactionlnformationClass: Indica qual classe de informação sobre o objeto Transaction está sendo requisitada;TransactionlnformationClass: Indicates which class of information about the Transaction object is being requested;

TransactionInformation: Fornece um ponteiro para uma memória intermediária onde a informação de transação requisitada é armazenada;TransactionInformation: Provides a pointer to a buffer where the requested transaction information is stored;

TransactionlnformationLength: Indica o tamanho da memória intermediária apontada pelo Transactionlnformation; e ReturnLength: Fornece um ponteiro para a localização que irá receber o tamanho da informação gravada junto à memória intermediária Transactionlnformation.TransactionlnformationLength: Indicates the size of buffer pointed to by Transactionlnformation; e ReturnLength: Provides a pointer to the location that will receive the size of the information written to the Transactionlnformation buffer.

Valor de Retorno STATUS_SUCCESS STATUS_ACCESS_DENIED STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES STATUSJ N VALI D_l N FO_CLASS STATUS_INFO_LENGTH_MISMATCH SetlnformationT ransaction (INHANDLETransactionHandle, INTRANSACTION_INFORMATION_CLASSTransactionln-formationClass, IN PVOlDTransactionlnformation, IN ULONGTransac-tionlnformationLength);Return Value STATUS_SUCCESS STATUS_ACCESS_DENIED STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES STATUSJ N N VALI D_l FO_CLASS STATUS_INFO_LENGTH_MISMATCH SetlnformationT ransaction (INHANDLETransactionHandle, INTRANSACTION_INFORMATION_CLASSTransactionln-formationClass, PVOlDTransactionlnformation IN, IN-ULONGTransac tionlnformationLength);

[0092] Esta rotina estabelece a informação requisitada sobre o objeto Transaction representado por TransactionHandle.This routine establishes the requested information about the Transaction object represented by TransactionHandle.

Argumentos: TransactionHandle: Fornece um identificador indicando o Transaction cuja informação será modificada;Arguments: TransactionHandle: Provides an identifier indicating the Transaction whose information will be modified;

TransactionlnformationClass: Indica qual classe de informação sobre o objeto Transaction está sendo requisitada;TransactionlnformationClass: Indicates which class of information about the Transaction object is being requested;

Transactionlnformation: Fornece um ponteiro para uma memória intermediária onde a informação de transação requisitada é armazenada;Transactionlnformation: Provides a pointer to a buffer where the requested transaction information is stored;

TransactionlnformationLength: Indica um tamanho da memória intermediária apontada pelo Transactionlnformation; e ReturnLength: Fornece um ponteiro para uma localização que irá receber o tamanho da informação gravada junto à memória intermediária T ransaction Information.TransactionlnformationLength: Indicates a buffer size pointed to by Transactionlnformation; e ReturnLength: Provides a pointer to a location that will receive the size of the information written next to the Transaction Information buffer.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLESTATUS_INVALID_HANDLE

STATUSJNSUFFICIENTRESOURCESSTATUSJNSUFFICIENTRESOURCES

STATUS_INVALID_INFO_CLASSSTATUS_INVALID_INFO_CLASS

STATUS_INFO_LENGTH_MISMATCHSTATUS_INFO_LENGTH_MISMATCH

[0093] O que se segue inclui uma descrição mais detalhada das APIs listadas acima, para implementar operações em objetos núcleo RMO. As descrições incluem uma descrição da rotina, dos argumentos correspondentes e dos valores de retorno.The following includes a more detailed description of the APIs listed above for implementing operations on RMO core objects. Descriptions include a description of the routine, the corresponding arguments, and the return values.

CreateResourceManager (OUT PHANDLEResourceManagerHandle, IN ACCESS_M ASK DesiredAccess Optional, IN POB J ECT_ATTRI BUTES ObjectAttributes, IN ULONGCreateOptions Optional, INRM_NOTIFICATION_ROUTINENotificationRoutine Optional);CreateResourceManager (OUT PHANDLEResourceManagerHandle, IN ACCESS_M ASK DesiredAccess Optional, IN POB J ECT_ATTRI BUTES ObjectAttributes, IN ULONGCreateOptions Optional, INRM_NOTIFICATION_ROUTINENotificationRoutine Optional);

[0094] Esta rotina cria um novo objeto ResourceManager para representar um recurso.[0094] This routine creates a new ResourceManager object to represent a resource.

[0095] Um objeto ResourceManager também serve como um ponto final para notificações TM com respeito aos Transactions que o RM uniu; um RM requisita estas notificações por chamar GetNotification- ResourceManager.[0095] A ResourceManager object also serves as an endpoint for TM notifications regarding the Transactions that RM has joined; an RM requests these notifications by calling GetNotification- ResourceManager.

[0096] Um ResourceManager é normalmente um objeto persistente, isto é, o objeto deve ser novamente aberto e executado recuperação após cada falha (sistema ou RM). Uma versão transitória de um objeto ResourceManager pode ser criada por especificar a opção RESOURCEMANAGER_NO_RECOVERY. Um RM transitório não é obrigado ou permitido de executar a recuperação. A opção do RM não recuperável permite à uma aplicação ou à um RM receber notificações a cerca do progresso da transação (por exemplo, PREPREPARE, PREPARE, COMMIT) sem ser requerido de implementar toda a complexidade de registrar preparos e executar a recuperação.[0096] A ResourceManager is usually a persistent object, that is, the object must be reopened and recovery performed after each failure (system or RM). A transient version of a ResourceManager object can be created by specifying the RESOURCEMANAGER_NO_RECOVERY option. A transient RM is not required or allowed to perform recovery. The nonrecoverable RM option allows an application or RM to receive notifications about transaction progress (for example, PREPREPARE, PREPARE, COMMIT) without being required to implement all the complexity of recording staging and performing recovery.

Argumentos: ResourceManagerHandle: Fornece um ponteiro para a localização que irá receber um identificador para o novo ResourceManager;Arguments: ResourceManagerHandle: Provides a pointer to the location that will receive a handle to the new ResourceManager;

DesiredAccess: Fornece uma máscara especificando um nível de acesso desejado. Escolhas de máscara de acesso válidas são: SYNCHRONIZE: para sincronizar operações em um identificador, RESOURCE MANAGER_DESTROY: para destruir este gerenciador de recurso, RESOURCE_MANAGER_READ_ATTRIBUTES: para ler atributos associados com um gerenciador de recurso, RESOURCE MANAGER_WRITE_ATTRIBUTES: para gravar atributos associados com um gerenciador de recurso;DesiredAccess: Provides a mask specifying a desired access level. Valid access mask choices are: SYNCHRONIZE: To synchronize operations on an identifier, RESOURCE MANAGER_DESTROY: To destroy this resource manager, RESOURCE_MANAGER_READ_ATTRIBUTES: To read attributes associated with a resource manager, RESOURCE MANAGER_WRITE_ATTRIBUTES to write attributes with associated manager resource;

ObjectAttributes: Especifica os atributos para o novo objeto RM; isto inclui o nome do RM;ObjectAttributes: Specifies the attributes for the new RM object; This includes the name of the RM;

CreateOptions: Especifica opções para o objeto criado; RESOURCEMANAGER_NO_RECOVERY: O objeto Resou- rceManager não é persistente e não executa a recuperação; RESOURCEMANAGER COMMUNICATION: O Resource-Manager sabe como se comunicar com outros computadores. O Re-sourceManager pode ser utilizado para conduzir ou reter as transações; RESOURCEMANAGER_CLUSTER_RECOVERY: O Re-sourceManager sabe como ler / distribuir resultados para registrar arquivos que podem ter falhado através dos outros nós no agrupamento. O ResourceManager pode ser utilizado para recuperar transações em um agrupamento; e NotificationRoutine: Especifica uma rotina de notificação a ser chamada quando as notificações estiverem disponíveis para este ResourceManager.CreateOptions: Specifies options for the created object; RESOURCEMANAGER_NO_RECOVERY: The ResouceManager object is not persistent and does not perform recovery; RESOURCEMANAGER COMMUNICATION: Resource-Manager knows how to communicate with other computers. Re-sourceManager can be used to conduct or hold transactions; RESOURCEMANAGER_CLUSTER_RECOVERY: Re-sourceManager knows how to read / distribute results to log files that may have failed through the other nodes in the cluster. ResourceManager can be used to retrieve transactions in a cluster; e NotificationRoutine: Specifies a notification routine to call when notifications are available for this ResourceManager.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_INVALID_PARAMETERSTATUS_INVALID_PARAMETER

STATUS_OBJECT_NAME_COLLISIONSTATUS_OBJECT_NAME_COLLISION

ST ATU S_0 B J ECTN AM E_l N VALIDST ATU S_0 B J ECTN AM E_l N VALID

STATUS_PRIVILEGE_NOT_HELDSTATUS_PRIVILEGE_NOT_HELD

STATUSJNSUFFICIENTRESOURCESSTATUSJNSUFFICIENTRESOURCES

OpenResourceManager (OUT PHANDLEResourceManagerHandle, IN ACC ESS_M AS K Desi red Access Optional, INPOBJECTATTRIBUTESObjectAttributes, IN U LON G OpenOptions Optional, INRMNOTIFICATIONROUTINENotificationRoutine Optional).OpenResourceManager (OUT PHANDLEResourceManagerHandle, IN ACC ESS_M AS K Desi red Access Optional, INPOBJECTATTRIBUTESObjectAttributes, IN U LON G OpenOptions Optional, INRMNOTIFICATIONROUTINENotificationRoutine Optional).

[0097] Esta rotina abre um objeto ResourceManager existente pelo nome. Se um objeto ResourceManager alvo for persistente porém não correntemente aberto, o objeto está inicialmente em um estado de "recuperação" e deve ser recuperado; após a recuperação estar completa, RecoveryCompleteResourceManager deve ser chamado. Argumentos: ResourceManagerHandle: Fornece um ponteiro para a localização que irá receber um identificador para o objeto ResourceManager existente;[0097] This routine opens an existing ResourceManager object by name. If a target ResourceManager object is persistent but not currently open, the object is initially in a "retrieve" state and must be retrieved; After the recovery is complete, RecoveryCompleteResourceManager should be called. Arguments: ResourceManagerHandle: Provides a pointer to the location that will receive a handle to the existing ResourceManager object;

DesiredAccess: Fornece a máscara especificando o acesso desejado para este objeto;DesiredAccess: Provides the mask specifying the desired access to this object;

ObjectAttributes: Especifica os atributos para o novo objeto RM;ObjectAttributes: Specifies the attributes for the new RM object;

OpenOptions: Especifica opções para o objeto. Opções válidas incluem: RESOURCE_MANAGER_DETAILED_RECOVERY_NOTIFICATIONSOpenOptions: Specifies options for the object. Valid options include: RESOURCE_MANAGER_DETAILED_RECOVERY_NOTIFICATIONS

[0098] O gerenciador de recurso recebe notificações de recuperação detalhadas (com informações adicionais sobre os pontos finais de comunicação) ao invés de notificações de recuperação normais; e [0099] NotificationRoutine: Especifica uma rotina de notificação que será chamada quando as notificações estiverem disponíveis para este ResourceManager.The resource manager receives detailed recovery notifications (with additional information about communication endpoints) instead of normal recovery notifications; and [0099] NotificationRoutine: Specifies a notification routine that will be called when notifications are available for this ResourceManager.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUSJ N VALI D_PARAM ETERSTATUSJ N VALI D_PARAM ETER

ST ATU S_0 B J ECT_N AM E_l N VALIDST ATU S_0 B J ECT_N AM E_l N VALID

STATUS_OBJECT_NAME_NOT_FOUNDSTATUS_OBJECT_NAME_NOT_FOUND

STATUS_OBJ ECT_PATH_SYNTAX_BADSTATUS_OBJ ECT_PATH_SYNTAX_BAD

STATUS_PRIVILEGE_NOT_HELDSTATUS_PRIVILEGE_NOT_HELD

STATUS_INSUFFICIENT_RESOURCESSTATUS_INSUFFICIENT_RESOURCES

DestroyResourceManager (INPHANDLEResourceManagerHandle);DestroyResourceManager (INPHANDLEResourceManagerHandle);

[00100] Esta rotina destrói um objeto ResourceManager, causando que ele não seja mais persistente.[00100] This routine destroys a ResourceManager object, causing it to be no longer persistent.

Argumentos: ResourceManagerHandle: fornece um identificador indicando o objeto ResourceManager a ser destruído.Arguments: ResourceManagerHandle: Provides an identifier indicating the ResourceManager object to be destroyed.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUSACCESSDENIEDSTATUSACCESSDENIED

STATUSJNVALIDHANDLESTATUSJNVALIDHANDLE

STATUSINSUFFICIENTRESOURCES STATUS_TM_NEEDS_RECOVERY.STATUSINSUFFICIENTRESOURCES STATUS_TM_NEEDS_RECOVERY.

QuerylnformationResourceManager (IN HANDLE ResourceManagerHandle, INRESOURCEMANAGERINFORMATIONCLASSQuerylnformationResourceManager (IN HANDLE ResourceManagerHandle, INRESOURCEMANAGERINFORMATIONCLASS

ResourceManagerlnformationClass, OUT PVOlDResourceManagerlnformation, INULONGResourceManagerlnformationClass, OUT PVOlDResourceManagerlnformation, INULONG

ResourceManagerlnformationLength, OUTPULONG ReturnLengthOptional).ResourceManagerlnformationLength, OUTPULONG ReturnLengthOptional).

[00101] Esta rotina retorna a informação requisitada sobre o RMO representado por ResourceManagerHandle.[00101] This routine returns the requested RMO information represented by ResourceManagerHandle.

Argumentos: ResourceManagerHandle: Fornece um identificador indicando o ResourceManager para o qual a informação está sendo requisitada;Arguments: ResourceManagerHandle: Provides an identifier indicating the ResourceManager for which information is being requested;

ResourceManagerlnformationClass: indica qual classe de informação sobre o objeto ResourceManager está sendo requisitada;ResourceManagerlnformationClass: Indicates which class of information about the ResourceManager object is being requested;

ResourceManagerlnformation: Fornece um ponteiro para uma memória intermediária onde a informação do ResourceManager requisitada será armazenada;ResourceManagerlnformation: Provides a pointer to a buffer where the requested ResourceManager information will be stored;

ResourceManagerlnformationLength: Indica o tamanho da memória intermediária apontada pelo ResourceManagerlnformation; e ReturnLength: Fornece um ponteiro para a localização para receber um tamanho da informação gravada junto à memória intermediária ResourceManagerlnformation.ResourceManagerlnformationLength: Indicates the size of buffer memory pointed to by ResourceManagerlnformation; e ReturnLength: Provides a pointer to the location to receive a size of the information written to the ResourceManagerlnformation buffer.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUSACCESSDENIEDSTATUSACCESSDENIED

STATUSJNVALIDHANDLESTATUSJNVALIDHANDLE

STATUSINSUFFICIENTRESOURCESSTATUSINSUFFICIENTRESOURCES

STATUSINVALIDINFOCLASSSTATUSINVALIDINFOCLASS

STATUS_INFO_LENGTH_MISMATCHSTATUS_INFO_LENGTH_MISMATCH

SetlnformationResourceManager (INHANDLEResourceManagerHandle, IN RESOURCEMANAGERINFORMATIONCLASS ResourceManagerlnformatioNCIass, IN PVOID ResourceManagerlnformation, INULONGResourceManagerlnformationLength);SetlnformationResourceManager (INHANDLEResourceManagerHandle, IN RESOURCEMANAGERINFORMATIONCLASS ResourceManagerlnformatioNCIass, IN PVOID ResourceManagerlnformation, INULONGResourceManagerlnformationLength);

[00102] Esta rotina estabelece a informação requisitada sobre o RMO representado por ResourceManagerHandle.This routine establishes the requested information about the RMO represented by ResourceManagerHandle.

Argumentos: ResourceManagerHandle: Fornece um identificador indicando o ResourceManager para o qual a informação está sendo modificada;Arguments: ResourceManagerHandle: Provides an identifier indicating the ResourceManager for which the information is being modified;

ResourceManagerlnformationClass: indica qual classe de informação sobre o objeto ResourceManager está sendo requisitada;ResourceManagerlnformationClass: Indicates which class of information about the ResourceManager object is being requested;

ResourceManagerlnformation: Fornece um ponteiro para uma memória intermediária onde a informação do ResourceManager requisitada é armazenada; e ResourceManagerlnformationLength: Indica o tamanho da memória intermediária apontada pelo ResourceManagerlnformation; Valor de retorno: STATUS_SUCCESSResourceManagerlnformation: Provides a pointer to a buffer where the requested ResourceManager information is stored; e ResourceManagerlnformationLength: Indicates the size of buffer memory pointed to by ResourceManagerlnformation; Return Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLESTATUS_INVALID_HANDLE

STATUS_INSUFFICIENT_RESOURCESSTATUS_INSUFFICIENT_RESOURCES

STATUS_INVALID_INFO_CLASS STATUS_INFO_LENGTH_MISMATCH.STATUS_INVALID_INFO_CLASS STATUS_INFO_LENGTH_MISMATCH.

CreateEnlistment (INPHANDLEResourceManagerHandle, INPHANDLETransactionHandle, INNOTIFICATION_MASKNotificationMask, INLPVOlDTransactionKeyOptional);CreateEnlistment (INPHANDLEResourceManagerHandle, INPHANDLETransactionHandle, INNOTIFICATION_MASKNotificationMask, INLPVOlDTransactionKeyOptional);

[00103] Esta rotina causa que o RMO "se una" à uma transação particular e receba notificações relacionando-se à mesma.[00103] This routine causes the RMO to "join" a particular transaction and receive notifications relating to it.

[00104] A chamada CreateEnlistment não se altera e um RM pode chamar esta rotina várias vezes de modo a alterar sua Notification-Mask ou TransactionKey. As chamadas subsequentes para CreateEnlistment substituem uma máscara de notificação e a chave de transação sem criar uma nova inclusão na transação.[00104] The CreateEnlistment call does not change, and an RM can call this routine multiple times to change its Notification-Mask or TransactionKey. Subsequent calls to CreateEnlistment override a notification mask and transaction key without creating a new inclusion in the transaction.

[00105] NotificationMask pode ser utilizada para requisitar que as notificações sejam recebidas várias vezes. Por exemplo, um RM recebendo uma notificação PREPREPARE pode requisitar outra por chamar JoinTransaction e especificar o indicador PREPREPARE. Assim, um RM pode receber várias requisições PREPREPARE. Tais requisições podem ser recusadas, o que pode ser desejável se a transação tiver contiunado passando pelo ponto em que a notificação requisitada teria sido recebida. Por exemplo, requisitar um PREPREPARE quando algum RM já tiver sido notificado para PREPARE pode não ser permi- tido.[00105] NotificationMask can be used to request notifications to be received multiple times. For example, an RM receiving a PREPREPARE notification may request another by calling JoinTransaction and specifying the PREPREPARE indicator. Thus, an RM can receive multiple PREPREPARE requests. Such requests may be refused, which may be desirable if the transaction has continued past the point at which the requested notification would have been received. For example, requesting a PREPREPARE when any RM has already been notified to PREPARE may not be allowed.

Argumentos: ResourceManagerHandle: Fornece um identificador para um RM receber notificações a cerca do Transaction especificado;Arguments: ResourceManagerHandle: Provides an identifier for an RM to receive notifications about the specified Transaction;

TransactionHandle: Fornece um identificador para o Transaction junto ao qual o RM deseja se unir;TransactionHandle: Provides an identifier for the Transaction with which RM wants to join;

NotificationMask: especifica as notificações que o RM gostaria de receber com respeito à este Transaction. Máscaras válidas são como se segue e podem ser unidas com um operador OR: TRANSACTION_NOTIFY_MASK_RM: Notificações comuns desejadas por um RM (PREPARE, COMMIT, ROLLBACK, SAVEPOINT), TRANSACTION_NOTIFY_MASK_CRM: Notificações comuns desejadas por um CRM ou TM Superior (PrePrepare_Complete, PrepareComplete. CommitComplete, RolIbackComplete, Saveback-Complete), TRANSACTION_NOTIFY_PREPREPARE: Notificação para PrePrepare, TRANSACTION_NOTIFY_PREPARE: Notificação para PREPARE, TRANSACTION_NOTIFY_COMMIT: Notificação para COMMIT, TRANSACTION_NOTIFY_ROLLBACK: Notificação para ROLLBACK, TRANSACTION_NOTIFY_PREPREPARE_COMPLETE: Notificação de que PREPREPARE está completo, TRANSACTION_NOTIFY_PREPARE_COMPLETE: Notificação de que PREPARE está completo, TRANSACTION_NOTIFY_COMMIT_COMPLETE: Notificação de que COMMIT está completo, TRANSACTION_NOTIFY_ROLLBACK_COMPLETE: Notifi- cação de que ROLLBACK está completo, e TRANSACTION_NOTIFY_SAVEPOINT_COMPLETE: Notificação de que SAVEPOINT está completo; e TransactionKey: Especifica um valor de ponteiro opaco que o RM gostaria de receber junto com quaisquer notificações para este Transaction. O RM pode utilizar este para associar notificações com algum objeto no espaço de endereço RM, assim prevenindo a necessidade de executar uma busca cada vez que ocorrer uma notificação. Valor de Retorno: STATUS_SUCCESSNotificationMask: Specifies the notifications RM would like to receive regarding this Transaction. Valid masks are as follows and can be joined with an OR operator: TRANSACTION_NOTIFY_MASK_RM: Common notifications desired by an RM (PREPARE, COMMIT, ROLLBACK, SAVEPOINT), TRANSACTION_NOTIFY_MASK_CRM: Common notifications desired by a CRM or Superior TM (PrePrepare_Complete, CommitComplete .Complete. , RolIbackComplete, Saveback-complete), TRANSACTION_NOTIFY_PREPREPARE: Notification for PrePrepare, TRANSACTION_NOTIFY_PREPARE: Notification to PREPARE, TRANSACTION_NOTIFY_COMMIT: Notification to COMMIT, TRANSACTION_NOTIFY_ROLLBACK: Notification to ROLLBACK, TRANSACTION_NOTIFY_PREPREPARE_COMPLETE: Notification that PREPREPARE is complete, TRANSACTION_NOTIFY_PREPARE_COMPLETE: that PREPARE notification is complete, TRANSACTION_NOTIFY_COMMIT_COMPLETE: Notification that COMMIT is complete, TRANSACTION_NOTIFY_ROLLBACK_COMPLETE: Notification that ROLLBACK is complete, and TRANSACTION_NOTIFY_SAVEPOINT_COMPLETE: Notification that SAVEP OINT is complete; e TransactionKey: Specifies an opaque pointer value that RM would like to receive along with any notifications for this Transaction. RM can use this to associate notifications with some object in the RM address space, thus preventing the need to perform a search each time a notification occurs. Return Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_PARAMETERSTATUS_INVALID_PARAMETER

STATUS_INVALID_HANDLESTATUS_INVALID_HANDLE

STATUS_INSUFFICIENT_RESOURCES STATUS_TM_TOO_LATE.STATUS_INSUFFICIENT_RESOURCES STATUS_TM_TOO_LATE.

GetNotificationResourceManager (INPHANDLEResourceManagerHandle, INPTRANSACTION_NOTIFICATIONTransactionNotifica- tion, INPLARGEJNTEGERTimeout Optional);GetNotificationResourceManager (INPHANDLEResourceManagerHandle, INPTRANSACTION_NOTIFICATIONTransactionNotification, INPLARGEJNTEGERTimeout Optional);

[00106] Esta rotina consulta e retorna uma notificação RM, se alguma estiver disponível.This routine queries and returns an RM notification, if any is available.

Argumentos: ResourceManagerHandle: Fornece um identificador indicando o ResourceManager para o qual uma notificação deve ser retornada;Arguments: ResourceManagerHandle: Provides an identifier indicating the ResourceManager to which a notification should be returned;

TransactionNotification: Fornece um ponteiro para uma estrutura TRANSACTIONNOTIFICATION a ser preenchida com a primeira notificação disponível; e Timeout: Fornece o tempo até o qual o chamador deseja bloquear enquanto esperando que uma notificação se torne disponível. Se nenhuma estiver disponível quando este tempo de espera expirar, o chamador retorna com STATUS_TIMEOUT.TransactionNotification: Provides a pointer to a TRANSACTIONNOTIFICATION structure to be populated with the first available notification; e Timeout: Provides the time until which the caller wants to block while waiting for a notification to become available. If none are available when this timeout expires, the caller returns with STATUS_TIMEOUT.

Valor de retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_TIMEOUTSTATUS_TIMEOUT

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

[00107] O que se segue inclui uma descrição mais detalhada das APIs listadas acima, para implementar operações em objetos núcleo TX por objetos núcleo RMO após se unir com uma transação. As descrições incluem uma descrição da rotina, dos argumentos correspondentes e dos valores de retorno.The following includes a more detailed description of the APIs listed above for implementing operations on TX core objects by RMO core objects after joining with a transaction. Descriptions include a description of the routine, the corresponding arguments, and the return values.

PrePrepareComplete (INPHANDLEEnlistmentHandle);PrePrepareComplete (INPHANDLEEnlistmentHandle);

[00108] Esta rotina indica que o RM completou o processamento de preparo anterior (também conhecido como "PhaseO") de um Transac-tion como requisitado pelo KTM[00108] This routine indicates that RM has completed the previous staging (also known as "PhaseO") processing of a Transaction as requested by KTM

Argumentos: TransactionHandle: Fornece um identificador indicando o Transaction para o qual a operação de preparo anterior foi completada.Arguments: TransactionHandle: Provides an identifier indicating the Transaction for which the previous staging operation was completed.

Valor de retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUSJNVALIDHANDLE STATUS_INSUFFICIENT_RESOURCES.STATUSJNVALIDHANDLE STATUS_INSUFFICIENT_RESOURCES.

STATUS_TM_NOT_REQUESTEDSTATUS_TM_NOT_REQUESTED

PrepareComplete (INPHANDLEEnlistmentHandle);PrepareComplete (INPHANDLEEnlistmentHandle);

[00109] Esta rotina indica que o RM completou a preparação de um Transaction como requisitado pelo KTM[00109] This routine indicates that RM has completed the preparation of a Transaction as requested by KTM.

Argumentos: TransactionHandle: Fornece um identificador indicando o Transaction para o qual a operação de preparo foi completada.Arguments: TransactionHandle: Provides a handle indicating the Transaction for which the prepare operation was completed.

Valor de retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUSJNVALIDHANDLE STATUS_INSUFFICIENT_RESOURCES.STATUSJNVALIDHANDLE STATUS_INSUFFICIENT_RESOURCES.

STATUS_TM_NOT_REQUESTEDSTATUS_TM_NOT_REQUESTED

RolIbackComplete (INPHANDLEEnlistmentHandle);RolIbackComplete (INPHANDLEEnlistmentHandle);

[00110] Esta rotina indica que o RM de forma bem sucedida completou a reversão do trabalho executado por um Transaction como requisitado. Se o RM não estiver apto a de forma bem sucedida reverter o Transaction como requisitado, ele deve emitir uma requisição para uma reversão completa via RolIbackTransaction.[00110] This routine indicates that RM successfully completed the rollback of work performed by a Transaction as requested. If RM is unable to successfully reverse Transaction as requested, it must issue a request for a full rollback via RolIbackTransaction.

Argumentos: TransactionHandle: Fornece um identificador indicando o Transaction para o qual a operação de reversão foi completada.Arguments: TransactionHandle: Provides an identifier indicating the Transaction for which the rollback operation was completed.

Valor de retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

STATUS_TM_NOT_REQUESTEDSTATUS_TM_NOT_REQUESTED

CommitComplete (INPHANDLEEnlistmentHandle);CommitComplete (INPHANDLEEnlistmentHandle);

[00111] Esta rotina indica que o RM completou a entrega do traba- Iho executado por um Transaction como requisitado.[00111] This routine indicates that RM has completed the delivery of work performed by a Transaction as requested.

Argumentos: TransactionHandle: Fornece um identificador indicando o Transaction para o qual a operação de entrega foi completada.Arguments: TransactionHandle: Provides an identifier indicating the Transaction for which the delivery operation was completed.

Valor de retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

STATUS_TM_NOT_REQUESTEDSTATUS_TM_NOT_REQUESTED

[00112] Em adição, as rotinas de propagação podem ser proporcionadas para os objetos núcleo. Exemplos destas rotinas se seguem. RegisterProtocolAddressInformation (IN HANDLEResourceManager, IN PROTOCOLJDProtocolld, IN ULONGProtocolInformationSize, IN PVOlDProtocolInformationOptional).In addition, propagation routines may be provided for core objects. Examples of these routines follow. RegisterProtocolAddressInformation (IN HANDLEResourceManager, IN PROTOCOLJDProtocolld, IN ULONGProtocolInformationSize, IN PVOlDProtocolInformationOptional).

[00113] Esta rotina registra um gerenciador de recurso como um gerenciador de recurso de comunicações para um protocolo particular. Ela também associa uma bolha de informações com este protocolo. Somente um gerenciador de recurso pode registrar-se para um protocolo em uma dada máquina.[00113] This routine registers a resource manager as a communications resource manager for a particular protocol. It also associates an information bubble with this protocol. Only one resource manager can register for a protocol on a given machine.

Argumentos: ResourceManager: Fornece um identificador para o gerenciador de recurso que nós estamos registrando: Protocolld: o GUID identificando o protocolo; ProtocolInformationSize: O tamanho de ProtocolInformation; ProtocolInformation: bolha opcional para associar-se com este protocolo;Arguments: ResourceManager: Provides an identifier for the resource manager we are registering: Protocolld: the GUID identifying the protocol; ProtocolInformationSize: The size of ProtocolInformation; ProtocolInformation: optional bubble to associate with this protocol;

Valores de retorno STATUS_SUCCESS STATUSJNVALIDHANDLE MarshallT ransaction (INPHANDLETransactionHandle, INULONGNumberOfProtocolos, IN PROT OCOLID Protocol Array, INULONGBufferLength, INPVOlDBuffer, OUTPULONG BufferUsedOptional).Return Values STATUS_SUCCESS STATUSJNVALIDHANDLE MarshallT ransaction (INPHANDLETransactionHandle, INULONGNumberOfProtocol, IN PROT OCOLID Protocol Array, INULONGBufferLength, INPVOlDBuffer, OUTPULONG BufferUsedOptional).

[00114] Esta rotina requisita que uma representação do Transaction correspondendo ao TransactionHandle seja serializada em uma memória intermediária.[00114] This routine requires that a Transaction representation corresponding to TransactionHandle be serialized into a buffer.

Argumentos: TransactionHandle: Fornece um identificador indicando o Transaction para o qual a operação de entrega foi completada;Arguments: TransactionHandle: Provides an identifier indicating the Transaction for which the delivery operation was completed;

NumberOfProtocois: Indica o tamanho do vetor de protocolos;NumberOfProtocois: Indicates the size of the protocol array;

ProtocolArray: Um vetor de PROTOCOL IDs (GUIDs) que especifica os protocolos que podem ser utilizados para conduzir esta transação. O vetor deve ser ordenado por preferência - o primeiro protocolo no vetor é o protocolo preferido, o segundo protocolo é o segundo protocolo mais preferido, etc,;ProtocolArray: A vector of PROTOCOL IDs (GUIDs) that specify the protocols that can be used to conduct this transaction. The vector must be sorted by preference - the first protocol in the vector is the preferred protocol, the second protocol is the second most preferred protocol, etc .;

BufferLength: Fornece o tamanho da Memória intermediária que está disponível;BufferLength: Provides the size of Buffer Memory that is available;

Buffer: Fornece um ponteiro para uma memória intermediária onde a serialização da transação deve ser armazenada; e BufferUsed: Fornece um ponteiro para uma localização onde os bytes reais gravados na memória intermediária devem ser armazenados.Buffer: Provides a pointer to a buffer where transaction serialization should be stored; e BufferUsed: Provides a pointer to a location where the actual bytes written to buffer should be stored.

Valores de retorno: STATUS_SUCCESSReturn Values: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

GetProtocolAddressInformation (INULONGAddressBufferSize, OUTPVOlDAddressBuffer, OUTPULONGAddressBufferUsedOptional).GetProtocolAddressInformation (INULONGAddressBufferSize, OUTPVOlDAddressBuffer, OUTPULONGAddressBufferUsedOptional).

[00115] Esta rotina requisita que a informação representando todos os protocolos registrados na máquina seja serializada no AddressBuf-fer. Esta informação pode então ser passada para outra maquina e utilizada como um argumento para PushTransaction, para estender uma transação para a máquina na qual o Addresslnformation foi gerado. Argumentos: AddressBufferSize: Fornece o tamanho da memória intermediária que está disponível.[00115] This routine requires that information representing all protocols registered on the machine be serialized in AddressBuffer. This information can then be passed to another machine and used as an argument to PushTransaction to extend a transaction to the machine on which Addresslnformation was generated. Arguments: AddressBufferSize: Provides the size of buffer that is available.

AddressBuffer: Fornece o tamanho da memória intermediária que está disponível.AddressBuffer: Provides the size of buffer that is available.

AddressBufferUsed: Fornece um ponteiro para uma localização da memória intermediária onde a serialização da transação é armazenada.AddressBufferUsed: Provides a pointer to a buffer location where transaction serialization is stored.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

PullTransaction (OUTPHANDLETransactionHandle, INULONGNumberOfProtocoIs, IN PCRM_PROT OCOL_l D Protocol Array, INULONGBufferLength, INPVOlDBuffer).PullTransaction (OUTPHANDLETransactionHandle, INULONGNumberOfProtocoIs, IN PCRM_PROT OCOL_l D Protocol Array, INULONGBufferLength, INPVOlDBuffer).

[00116] Esta rotina requisita que a transação representada pela se-rialização na memória intermediária seja feita disponível pelo gerenciador de transação. Um identificador para o novo objeto Transaction é retornado, após a transação ter sido de forma bem sucedida propagada por um dos gerenciadores de recurso registrados.[00116] This routine requires that the transaction represented by serialization in buffer be made available by the transaction manager. An identifier for the new Transaction object is returned after the transaction has been successfully propagated by one of the registered resource managers.

Argumentos: TransactionHandle: Fornece um ponteiro para onde o identificador representando o novo Transaction deve ser armazenado;Arguments: TransactionHandle: Provides a pointer to where the handle representing the new Transaction should be stored;

NumberOfProtocolos: Indica o tamanho do vetor de protocolos;NumberOfProtocolos: Indicates the size of the protocol vector;

ProtocolArray: Um vetor de PROTOCOL IDs (GUIDs) que especifica os protocolos que podem ser utilizados para conduzir esta transação. O vetor deve ser ordenado por preferência - o primeiro protocolo na série é o protocolo preferido, o segundo protocolo é segundo protocolo mais preferido, etc.;ProtocolArray: A vector of PROTOCOL IDs (GUIDs) that specify the protocols that can be used to conduct this transaction. The vector must be sorted by preference - the first protocol in the series is the preferred protocol, the second protocol is the second most preferred protocol, etc .;

BufferLength: Fornece o tamanho da memória intermediária que está disponível;BufferLength: Provides the size of buffer that is available;

Buffer: Fornece um ponteiro para uma memória intermediária onde a serialização da transação é armazenada.Buffer: Provides a pointer to a buffer where transaction serialization is stored.

Valores de Retorno: STATUS_SUCCESSReturn Values: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

PushTransaction (INHANDLETransactionHandle, INULONGNumberOfProtocoIs, IN PCRM_PROTOCOL_ID ProtocolArray, IN U LON G Desti nation I nfoLength, IN PVOID Desti nation I nfo, INULONGResponseBufferLength, OUTPVOlDResponseBuffer, OUTPULONGResponseBufferUsedOptional, OUTPULONG PushCookieOptional).PushTransaction (INHANDLETransactionHandle, INULONGNumberOfProtocoIs, IN PCRM_PROTOCOL_ID ProtocolArray, IN U LON G Desti nation I nfoLength, IN PVOID Desti nation I nfo, INULONGResponseBufferLength, OUTPVOlDResponseBuffer, OUTPULONGUponPulseUpOptionOUpOptionOulPulseUpOptional

[00117] Esta rotina requisita que a transação seja propagada para a máquina de destinação utilizando a propagação do estilo de extensão. Os protocolos serão utilizados na ordem em que eles são listados no ProtocolArray, até um ser bem sucedido. Se nenhum protocolo for bem sucedido na propagação para a máquina de destinação, a rotina retornará falha.[00117] This routine requests that the transaction be propagated to the destination machine using extension style propagation. Protocols will be used in the order in which they are listed in the ProtocolArray until one is successful. If no protocol succeeds in propagating to the destination machine, the routine returns failure.

Argumentos: TransactionHandle: Fornece um ponteiro para o objeto de transação que deve ser propagado para a máquina remota;Arguments: TransactionHandle: Provides a pointer to the transaction object that must be propagated to the remote machine;

Desti nation I nfoLength: Fornece o tamanho do Desti nation In-foLength que está disponível;Desti nation I nfoLength: Provides the size of Desti nation In-foLength that is available;

Destinationlnfo: Fornece um ponteiro para uma memória intermediária onde a informação de "ponto final" para o destino é armazenada. Esta pode ser a saída recebida a partir de uma chamada para GetProtocalAddressInformation na máquina de destinação;Destinationlnfo: Provides a pointer to a buffer where "endpoint" information for the destination is stored. This may be the output received from a call to GetProtocalAddressInformation on the destination machine;

ResponseBufferLength: Fornece o tamanho do Response-Buffer que está disponível;ResponseBufferLength: Provides the size of the Response Buffer that is available;

ResponseBuffer: Fornece um ponteiro para uma memória intermediária onde a serialização da transação é armazenada; e PushCookie: Fornece um ponteiro para uma memória intermediária cujo cookie representando esta requisição de extensão será armazenado.ResponseBuffer: Provides a pointer to a buffer where transaction serialization is stored; e PushCookie: Provides a pointer to a buffer whose cookie representing this extension request will be stored.

Valor de retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

GetPushT ransactionBuffer (INHANDLETransactionHandle, INULONGPushCookie, INULONGResponseBufferLength, OUTPVOlDResponseBuffer, OUTPULONGResponseBufferUsed Optional).GetPushT ransactionBuffer (INHANDLETransactionHandle, INULONGPushCookie, INULONGResponseBufferLength, OUTPVOlDResponseBuffer, OUTPULONGResponseBufferUsed Optional).

[00118] Esta chamada é utilizada para recuperar a saída de uma chamada para PushTransaction, no evento em que a chamada inicial para PushTransaction recebeu um código de retorno STATUS_BUFFER_TOO_SMALL. Neste evento, o chamador é para chamar GetPushTransactionBuffer e passa um tamanho de memória intermediária suficiente.[00118] This call is used to retrieve the output of a PushTransaction call in the event that the initial PushTransaction call received a return code STATUS_BUFFER_TOO_SMALL. In this event, the caller is to call GetPushTransactionBuffer and passes a sufficient buffer size.

Argumentos: TransactionHandle: Fornece um ponteiro para a localização onde o identificador representando o novo Transaction é para ser armazenado;Arguments: TransactionHandle: Provides a pointer to the location where the handle representing the new Transaction is to be stored;

BufferLength: Fornece o tamanho da memória intermediária que está disponível; e Buffer: Fornece um ponteiro para uma memória intermediária onde a serialização da transação é armazenada.BufferLength: Provides the size of buffer that is available; e Buffer: Provides a pointer to a buffer where transaction serialization is stored.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

PropagationComplete (IN HANDLEEnlistmentHandle, INULONGRequestCookie, INULONGBufferLength, INPVOlDBuffer).PropagationComplete (IN HANDLEEnlistmentHandle, INULONGRequestCookie, INULONGBufferLength, INPVOlDBuffer).

[00119] Esta rotina é chamada por um CRM após ele ter de forma bem sucedida completado a propagação de uma transação. Argumentos: TransactionHandle: Fornece um ponteiro para a localização onde o identificador representando o novo Transaction é para ser armazenado;[00119] This routine is called by a CRM after it has successfully completed the propagation of a transaction. Arguments: TransactionHandle: Provides a pointer to the location where the handle representing the new Transaction is to be stored;

RequestCookie: Fornece o RequestCookie que foi recebido no argumento de notificação PROPAGATE original, para indicar qual requisição foi completada;RequestCookie: Provides the RequestCookie that was received in the original PROPAGATE notification argument to indicate which request was completed;

BufferLength: Fornece o tamanho da Memória intermediária que está disponível; e Buffer: Fornece um ponteiro para uma memória intermediária onde a serialização da transação é armazenada.BufferLength: Provides the size of Buffer Memory that is available; e Buffer: Provides a pointer to a buffer where transaction serialization is stored.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.STATUS_INVALID_HANDLE STATUS_INSUFFICIENT_RESOURCES.

PropagationFailed (INHANDLEResourceManagerHandle, IN U LO N G Req uestCooki e, INSTATUSPropStatus).PropagationFailed (INHANDLEResourceManagerHandle, IN U LO N G Req uestCooki e, INSTATUSPropStatus).

Um CRM utiliza esta rotina para indicar que ele falhou ao propagar a transação como requisitado;A CRM uses this routine to indicate that it failed to propagate the transaction as requested;

Argumentos: TransactionHandle: Fornece um ponteiro para a localização onde o identificador representando a nova transação é para ser arma- zenado;Arguments: TransactionHandle: Provides a pointer to the location where the identifier representing the new transaction is to be stored;

BufferLength: Fornece o tamanho da memória intermediária que está disponível; e Buffer: Fornece um ponteiro para uma memória intermediária onde a serialização da transação é armazenada.BufferLength: Provides the size of buffer that is available; e Buffer: Provides a pointer to a buffer where transaction serialization is stored.

Valor de Retorno: STATUS_SUCCESSReturn Value: STATUS_SUCCESS

STATUS_ACCESS_DENIEDSTATUS_ACCESS_DENIED

STATUSJNVALIDHANDLE STATUSJNSUFFICIENTRESOURCES.STATUSJNVALIDHANDLE STATUSJNSUFFICIENTRESOURCES.

Ambiente de computação ilustrativo [00120] A FIG. 9 ilustra um ambiente de computador geral 900, o qual pode ser utilizado para implementar as técnicas descritas aqui dentro. O ambiente de computador 900 é somente um exemplo de um ambiente de computação e não é pretendido de sugerir qualquer limitação quanto ao escopo do uso ou funcionalidade das arquiteturas de computador e de rede. Nem deve o ambiente de computador 900 ser interpretado como possuindo qualquer dependência ou requerimento relacionando-se à qualquer um ou à combinação dos componentes ilustrados no ambiente de computador ilustrativo 900.Illustrative Computing Environment [00120] FIG. 9 illustrates a general computer environment 900 which may be used to implement the techniques described herein. Computer environment 900 is only an example of a computing environment and is not intended to suggest any limitations on the scope of use or functionality of computer and network architectures. Nor should the computer environment 900 be construed as having any dependency or requirement relating to any or the combination of the components illustrated in the illustrative computer environment 900.

[00121] O ambiente de computador 900 inclui um dispositivo de computação de propósito geral na forma de um computador 902. Os componentes do computador 902 podem incluir, mas não estão limitados à um ou mais processadores ou unidades de processamento 904, à memória do sistema 906 e ao barramento do sistema 908 que acopla vários componentes do sistema incluindo o processador 904 com a memória do sistema 906.Computer environment 900 includes a general purpose computing device in the form of a computer 902. Computer components 902 may include, but are not limited to one or more processors or processing units 904, system memory. 906 and the 908 system bus that couples various system components including the 904 processor with 906 system memory.

[00122] O barramento do sistema 908 representa um ou mais dentre vários tipo de estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, uma porta de gráficos acelerados e um processador ou barramento local utilizando qualquer uma dentre uma variedade de arquiteturas de barramento. À título de exemplo, tais arquiteturas podem incluir um barramento da Arquitetura de Padrão da Indústria (ISA), um barramento da Arquitetura de Micro Canal (MCA), um barramento ISA Aperfeiçoado (EISA), um barramento local da Associação de Padrões de Componentes Eletrônicos de Vídeo (VESA), um barramento da Interconexão de Componente Periférico (PCI) também conhecido como um barramento Mezanino, um barramento PCI expresso, um Barramento Serial Universal (USB), um barramento Digital Seguro (SD) ou um IEEE 1394, isto é, barramento FireWire.The 908 system bus represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a local processor or bus using any one of a number. variety of bus architectures. By way of example, such architectures may include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA bus (EISA), a local Electronic Components Standards Association bus. (VESA), a Peripheral Component Interconnect (PCI) bus also known as a Mezzanine bus, an PCI Express bus, a Universal Serial Bus (USB), a Secure Digital bus (SD), or an IEEE 1394, that is , FireWire bus.

[00123] O computador 902 pode incluir uma variedade de meios legíveis por computador. Tais meios podem ser qualquer meio disponível que seja acessível pelo computador 902 e inclua tanto o meio volátil e não volátil como o meio removível e não removível.Computer 902 may include a variety of computer readable media. Such media may be any available media accessible by the computer 902 and includes both volatile and non-volatile media as well as removable and non-removable media.

[00124] A memória do sistema 906 inclui o meio legível por computador na forma de memória volátil, tal como a memória de acesso ran-dômico (RAM) 910; e / ou a memória não volátil, tal como a memória somente leitura (ROM) 912 ou RAM flash. O sistema de entrada / saída básico (BIOS) 914, contendo as rotinas básicas que ajudam a transferir informações entre os elementos dentro do computador 902, tal como durante a inicialização, é armazenado na ROM 912 ou na RAM flash. A RAM 910 tipicamente contém dados e / ou módulos de programa que são imediatamente acessíveis e / ou presentemente operados pela unidade de processamento 904.System memory 906 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 910; and / or nonvolatile memory, such as read-only memory (ROM) 912 or flash RAM. The Basic Input / Output System (BIOS) 914, which contains the basic routines that help transfer information between elements within the 902 computer, such as during startup, is stored in ROM 912 or flash RAM. RAM 910 typically contains data and / or program modules that are immediately accessible and / or presently operated by processing unit 904.

[00125] O computador 902 também pode incluir outros meios de armazenamento do computador removíveis / não removíveis, voláteis / não voláteis. À título de exemplo, a FIG. 9 ilustra o controlador de disco rígido 916 para leitura e gravação junto à um meio magnético não removível, não volátil (não apresentado), o controlador de disco magnéti- co 918 para leitura e gravação junto à um disco magnético removível, não volátil 920 (por exemplo, um "disco flexível") e um controlador de disco ótico 922 para leitura e / ou gravação junto a um disco ótico removível, não volátil 924 tal como um CD-ROM, DVD-ROM ou outro meio ótico. Cada um dentre o controlador de disco rígido 916, do controlador de disco magnético 918 e do controlador de disco ótico 922 está conectado com o barramento do sistema 908 por uma ou mais interfaces de meio de dados 925. De forma alternativa, o controlador de disco rígido 916, o controlador de disco magnético 918 e o controlador de disco ótico 922 podem ser conectados com o barramento do sistema 908 por uma ou mais interfaces (não apresentadas).Computer 902 may also include other removable / non-removable, volatile / non-volatile computer storage media. By way of example, FIG. 9 illustrates hard disk controller 916 for reading and writing to non-removable, nonvolatile magnetic media (not shown), magnetic disk controller 918 to reading and writing to non-volatile removable magnetic disk 920 ( for example, a "floppy disk") and an optical disk controller 922 for reading and / or writing to a removable, non-volatile optical disk 924 such as a CD-ROM, DVD-ROM, or other optical medium. Each of the 916 hard disk controller, 918 magnetic disk controller, and 922 optical disk controller is connected to the 908 system bus through one or more 925 media interfaces. Alternatively, the disk controller 916, the 918 magnetic disk controller and 922 optical disk controller can be connected to the system bus 908 through one or more interfaces (not shown).

[00126] Os controladores de disco e seus meios legíveis por computador associados proporcionam o armazenamento não volátil das instruções legíveis por computador, das estruturas de dados, dos módulos de programa e de outros dados para o computador 902. Apesar do exemplo ilustrar um disco rígido 916, o disco magnético removível 920 e o disco ótico removível 924, é apreciado que outros tipos de meios legíveis por computador que possam armazenar dados que sejam acessíveis por um computador, tal como cassetes magnéticos ou outros dispositivos de armazenamento magnético, cartões de memória flash, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento ótico, memórias de acesso randômico (RAM), memórias somente leitura (ROM), memória somente leitura programável que pode ser eletricamente apagada (EEPROM) e coisa parecida, também podem ser utilizados para implementar o sistema e ambiente de computação ilustrativos.Disk controllers and their associated computer readable media provide nonvolatile storage of computer readable instructions, data structures, program modules, and other data for the 902 computer. Although the example illustrates a hard disk 916, removable magnetic disk 920 and removable optical disk 924, it is appreciated that other types of computer readable media that can store data that is accessible by a computer, such as magnetic cassettes or other magnetic storage devices, flash memory cards , CD-ROM, digital versatile discs (DVD) or other optical storage, random access memories (RAM), read-only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like can also be used to implement the illustrative computing system and environment.

[00127] Qualquer número de módulos de programa podem ser armazenados no disco rígido 916, no disco magnético 920, no disco ótico 924, na ROM 912 e / ou na RAM 910, incluindo à título de exemplo, o sistema operacional 926, um ou mais programas de aplicação 928, ou- tros módulos de programa 930 e dados de programa 932. Cada um do tal sistema operacional 926, do um ou mais programas de aplicação 928, dos outros módulos de programa 930 e dos dados de programa 932 (ou alguma combinação dos mesmos) pode desempenhar o papel de transações, de acordo com as modalidades ilustrativas descritas acima, para implementar todos ou parte dos componentes residentes que suportam o sistema de arquivo distribuído.Any number of program modules may be stored on hard disk 916, magnetic disk 920, optical disk 924, ROM 912 and / or RAM 910, including by way of example operating system 926, one or more. more application programs 928, other program modules 930 and program data 932. Each of such operating system 926, one or more application programs 928, other program modules 930 and program data 932 (or some combination thereof) may play the role of transactions, in accordance with the illustrative embodiments described above, to implement all or part of the resident components supporting the distributed file system.

[00128] Um usuário pode entrar com comandos e informações dentro do computador 902 via dispositivos de entrada tal como teclado 934 e um dispositivo de apontamento 936 (por exemplo, um "mouse"). Outros dispositivos de entrada 938 (não apresentados de forma específica) podem incluir um microfone, joystick, plataforma de jogo, antena de satélite, portal serial, digitalizador e / ou coisa parecida. Estes e outros dispositivos de entrada estão conectados com a unidade de processamento 904 via as interfaces de entrada / saída 940 que estão acopladas com o barramento do sistema 908, mas podem ser conectadas por outras estruturas de interface e de barramento, tal como por uma porta paralela, porta de jogo ou um barramento serial universal (USB).[00128] A user can enter commands and information into computer 902 via input devices such as keyboard 934 and pointing device 936 (for example, a "mouse"). Other 938 input devices (not specifically shown) may include a microphone, joystick, gaming platform, satellite antenna, serial port, scanner and / or the like. These and other input devices are connected to the processing unit 904 via the input / output interfaces 940 that are coupled with the 908 system bus, but can be connected by other interface and bus structures such as a port. parallel port, game port, or a universal serial bus (USB).

[00129] O monitor 942 ou outro tipo de dispositivo de exibição também pode ser conectado com o barramento do sistema 908 via uma interface tal como o adaptador de vídeo 944. Em adição ao monitor 942, outros dispositivos periféricos de saída podem incluir componentes tal como alto-falantes (não apresentados) e a impressora 946, a qual pode ser conectada com o computador 902 via as interfaces de E/S 940.The 942 monitor or other display device may also be connected to the 908 system bus via an interface such as the 944 video adapter. In addition to the 942 monitor, other peripheral output devices may include components such as speakers (not shown) and the 946 printer, which can be connected to the 902 computer via the 940 I / O interfaces.

[00130] O computador 902 pode operar em um ambiente em rede utilizando conexões lógicas com um ou mais computadores remotos, tal como o dispositivo de computação remoto 948. À título de exemplo, o dispositivo de computação remoto 948 pode ser um PC, computador portátil, um servidor, um roteador, um computador da rede, um disposi- tivo par ou outro nó comum da rede e coisa parecida. O dispositivo de computação remoto 948 é ilustrado como um computador portátil que pode incluir vários ou todos os elementos e características descritos aqui dentro relativos ao computador 902. De forma alternativa, o computador 902 também pode operar em um ambiente que não seja em rede.Computer 902 can operate in a networked environment using logical connections to one or more remote computers, such as remote computing device 948. By way of example, remote computing device 948 can be a PC, portable computer , a server, a router, a network computer, an even device, or another common network node, and the like. Remote computing device 948 is illustrated as a portable computer which may include many or all of the elements and features described herein related to computer 902. Alternatively, computer 902 may also operate in a non-networked environment.

[00131] As conexões lógicas entre o computador 902 e o computador remoto 948 são descritas como uma rede de área local (LAN) 950 e uma rede de área ampla geral (WAN) 952. Tais ambientes em rede são comuns em escritórios, redes de computador de grandes empresas, nas intranets e na Internet.The logical connections between the 902 computer and the 948 remote computer are described as a 950 local area network (LAN) and a 952 wide area network (WAN). Such network environments are common in offices, home networks, and corporate computer, intranets and the Internet.

[00132] Quando implementado em um ambiente em rede LAN, o computador 902 é conectado com a rede local 950 via a interface ou adaptador de rede 954. Quando implementado em um ambiente em rede WAN, o computador 902 tipicamente inclui o modem 956 ou outro dispositivo para estabelecer comunicações através da rede ampla 952. O modem 956, o qual pode ser interno ou externo em relação ao computador 902, pode ser conectado com o barramento do sistema 908 via as interfaces de E/S 940 ou por outros mecanismos apropriados. As conexões de rede ilustradas são ilustrativas e outro dispositivo para estabelecer pelo menos uma ligação de comunicação entre os computadores 902 e 948 pode ser empregado.When deployed in a LAN network environment, computer 902 is connected to local network 950 via the network interface or adapter 954. When deployed in a WAN network environment, computer 902 typically includes modem 956 or other device for establishing communications over wide 952. The 956 modem, which may be internal or external to the 902 computer, may be connected to the 908 system bus via the 940 I / O interfaces or other appropriate mechanisms. The illustrated network connections are illustrative and another device for establishing at least one communication link between computers 902 and 948 may be employed.

[00133] Em um ambiente em rede, tal como este ilustrado com o ambiente de computação 900, os módulos de programa descritos relativos ao computador 902, ou partes dos mesmos, podem ser armazenados em um dispositivo de armazenamento em memória remota. À título de exemplo, os programas de aplicação remota 958 residem em um dispositivo de memória do computador remoto 948. Para propósitos de ilustração, as aplicações ou programas e outros componentes de programa executáveis, tal como o sistema operacional, são ilustra- dos aqui dentro como blocos distintos, apesar de ser reconhecido que tais programas e componentes residem em vários momentos em diferentes componentes de armazenamento do dispositivo de computação 902 e são executados pelo menos por um processador de dados do computador.In a networked environment, such as illustrated with computing environment 900, the described program modules relating to computer 902, or parts thereof, may be stored in a remote memory storage device. By way of example, remote application programs 958 reside on a memory device of remote computer 948. For illustration purposes, applications or programs and other executable program components, such as the operating system, are illustrated herein. as separate blocks, although it is recognized that such programs and components reside at various times in different storage components of computing device 902 and are executed by at least one computer data processor.

[00134] Vários módulos e técnicas podem ser descritos aqui dentro no contexto geral de instruções executáveis por computador, tal como módulos de programa, executados por um ou mais computadores ou outros dispositivos. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados, etc. para executar tarefas particulares ou implementar tipos de dados abstratos particulares. Estes módulos de programa e coisa parecida podem ser executados como código nativo ou podem ser transferidos e executados, tal como em uma máquina virtual ou em outro ambiente de execução de compilação instantânea. Tipicamente, a funcionalidade dos módulos de programa pode ser combinada ou distribuída como desejado nas várias modalidades.Various modules and techniques may be described herein within the general context of computer executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. to perform particular tasks or implement particular abstract data types. These program modules and the like can be executed as native code or can be downloaded and executed, such as in a virtual machine or other instant build execution environment. Typically, the functionality of program modules may be combined or distributed as desired in the various embodiments.

[00135] Uma implementação destes módulos e técnicas pode ser armazenada ou transmitida através de alguma forma de meio legível por computador. Os meios legíveis por computador podem ser qualquer meio disponível que possa ser acessado por um computador. À título de exemplo e não de limitação, os meios legíveis por computador podem compreender o "meio de armazenamento do computador" e os "meios de comunicação".[00135] An implementation of these modules and techniques may be stored or transmitted via some form of computer readable medium. Computer readable media can be any available media that can be accessed by a computer. By way of example and not limitation, computer readable media may comprise "computer storage medium" and "media".

[00136] O "meio de armazenamento do computador" inclui o meio volátil e não volátil, removível e não removível implementado em qualquer método ou tecnologia para armazenamento de informações tal como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. O meio de armazenamento do computador inclui, mas não está limitado à RAM, ROM, EEPROM, memó- ria flash ou à outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento ótico, cassetes magnéticos, fita magnética, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético ou à qualquer outro meio que possa ser utilizado para armazenar a informação desejada e o qual possa ser acessado por um computador."Computer storage medium" includes volatile, non-volatile, removable, and non-removable media implemented in any method or technology for storing information such as computer readable instructions, data structures, program modules, or other data. . Computer storage includes, but is not limited to RAM, ROM, EEPROM, flash memory, or other memory technology, CD-ROMs, digital versatile discs (DVDs) or other optical storage, magnetic cassettes, magnetic tape. magnetic disk storage or other magnetic storage devices or any other means that may be used to store the desired information and which may be accessed by a computer.

[00137] O "meio de comunicação" tipicamente incorpora instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulado, tal como uma onda portadora ou outro mecanismo de transporte. Os meios de comunicação também incluem qualquer meio de distribuição de informação. O termo "sinal de dados modulado" significa um sinal que possui uma ou mais de suas características estabelecidas ou alteradas de modo a codificar a informação no sinal. Somente como um exemplo não limitativo, os meios de comunicação incluem meios com fios tal como uma rede com fios ou conexão direta com fios e meios sem fios tal como acústico, RF, infravermelho e outros meios sem fios. Combinações dentre qualquer um dos acima também estão incluídas dentro do escopo dos meios legíveis por computador.The "communication medium" typically incorporates computer readable instructions, data structures, program modules, or other data into a modulated data signal, such as a carrier wave or other transport mechanism. The media also includes any means of distributing information. The term "modulated data signal" means a signal having one or more of its characteristics established or altered to encode the information in the signal. As a non-limiting example only, the media includes wired media such as a wired network or direct wired connection and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.

[00138] Foi feita referência por toda esta especificação à "uma certa modalidade", "uma modalidade" ou à "uma modalidade ilustrativa" significando que um aspecto, estrutura ou característica particular descrita está incluída em pelo menos uma modalidade da presente invenção. Assim, o uso de tais frases pode se referir à mais do que somente uma modalidade. Adicionalmente, os aspectos, estruturas ou características descritas podem ser combinadas de um modo adequado em uma ou mais modalidades.Reference has been made throughout this specification to "a certain embodiment", "a embodiment" or "an illustrative embodiment" meaning that a particular aspect, structure or feature described is included in at least one embodiment of the present invention. Thus, the use of such phrases may refer to more than just one mode. Additionally, the described features, structures or characteristics may be suitably combined in one or more embodiments.

[00139] Entretanto, os com conhecimento na técnica relevante podem reconhecer que a invenção pode ser praticada sem um ou mais dos detalhes específicos ou com outros métodos, recursos, materiais, etc. Em outros exemplos, estruturas, recursos ou operações bem conhecidas não foram apresentados ou descritos em detalhes meramente para evitar obscurecer aspectos da invenção.However, those skilled in the relevant art may recognize that the invention may be practiced without one or more of the specific details or with other methods, resources, materials, etc. In other examples, well-known structures, features or operations have not been presented or described in detail merely to avoid obscuring aspects of the invention.

[00140] Enquanto que as modalidades e aplicações ilustrativas da presente invenção foram ilustradas e descritas, é para ser entendido que a invenção não está limitada à configuração e aos recursos precisos descritos acima. Várias modificações, alterações e variações aparentes para os com conhecimento na técnica podem ser feitas na disposição, nas operações e nos detalhes dos métodos e sistemas da presente invenção revelados aqui dentro sem se afastar do escopo da invenção reivindicada.While the illustrative embodiments and applications of the present invention have been illustrated and described, it is to be understood that the invention is not limited to the precise configuration and features described above. Various modifications, changes, and apparent variations to those skilled in the art may be made in the arrangement, operations, and details of the methods and systems of the present invention disclosed herein without departing from the scope of the claimed invention.

REIVINDICAÇÕES

Claims (15)

1. Sistema para suportar operações de arquivo remoto transacionadas entre um dispositivo local e um dispositivo remoto, o sistema sendo CARACTERIZADO por compreender: um gerenciador de transação; e um redirecionador para receber uma requisição para executar uma operação de arquivo em um arquivo residindo no dispositivo remoto, os dispositivos locais e remotos conectados com uma rede, em que o redirecionador é para enviar a requisição para o dispositivo remoto através da rede dentro de uma transação; em que o sistema compreende meio para executar etapas, em que uma aplicação gerando os dados faz uma chamada ou emite uma requisição para entregar a transação, e esta chamada ou requisição é passada para o gerenciador de transação; em que, em resposta, o gerenciador de transação gera uma notificação de preparo anterior; em que o redirecionador recebe a notificação de preparo anterior a partir do gerenciador de transação e, em resposta, atualiza os dados para o servidor via a rede, e em que o servidor passa os dados para um NTFS; em que um gerenciador de transação do servidor sinaliza ao redirecionador quando a operação de preparo anterior está completa; em que o redirecionador recebe uma notificação de preparo a partir do gerenciador de transação e envia uma mensagem de notificação de preparo para o servidor em resposta à notificação de preparo, a qual é passada para o gerenciador de transação do servidor, em que o gerenciador de transação do servidor passa a notificação de preparo para o NTFS; e em que a notificação de preparo causa que o cliente e o servidor armazenem os dados de um modo que permita aos dados serem entregues ou revertidos, em que os dados são então processados utilizando operações de entrega de duas fases.1. System for supporting remote file operations transacted between a local device and a remote device, the system being characterized by comprising: a transaction manager; and a redirector to receive a request to perform a file operation on a file residing on the remote device, local and remote devices connected to a network, wherein the redirector is to send the request to the remote device over the network within a network. transaction; wherein the system comprises means for performing steps, wherein an application generating the data makes a call or issues a request to deliver the transaction, and that call or request is passed to the transaction manager; wherein, in response, the transaction manager generates a previous staging notification; wherein the redirector receives the previous staging notification from the transaction manager and, in response, updates the data to the server via the network, and wherein the server passes the data to an NTFS; wherein a server transaction manager signals the redirector when the previous prepare operation is complete; where the redirector receives a staging notification from the transaction manager and sends a staging notification message to the server in response to the staging notification, which is passed to the server transaction manager, where the staging manager server transaction passes staging notification to NTFS; and wherein the staging notification causes the client and server to store the data in a manner that allows the data to be delivered or rolled back, wherein the data is then processed using two-phase delivery operations. 2. Sistema, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o gerenciador de transação não é integrado em um sistema de arquivos.System according to claim 1, characterized by the fact that the transaction manager is not integrated into a file system. 3. Sistema, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o redirecionador é para determinar se um FCB existente que está associado com uma transação neutra pode ser utilizado para a requisição.System according to claim 1, characterized in that the redirector is for determining whether an existing FCB that is associated with a neutral transaction can be used for the request. 4. Sistema, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o redirecionador, quando determinando se um FCB existente pode ser utilizado para a requisição, é para comparar um nome de caminho e contexto de transação para a requisição com um nome de caminho associado com o FCB existente.System according to claim 1, characterized in that the redirector, when determining whether an existing FCB can be used for the request, is to compare a request path name and transaction context with a request name. path associated with the existing FCB. 5. Sistema, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o gerenciador de transação é um gerenciador de transação de nível núcleo.System according to claim 1, characterized by the fact that the transaction manager is a core level transaction manager. 6. Sistema, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o redirecionador é para de forma seletiva indicar na requisição que o dispositivo remoto deve sinalizar para a máquina local em resposta à uma operação de arquivo sendo executada no arquivo que não foi requisitado pelo redirecionador.System according to claim 1, characterized in that the redirector is to selectively indicate in the request that the remote device must signal to the local machine in response to a file operation being performed on the file that has not been requested by the redirector. 7. Sistema, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o redirecionador envia a transação com a requisição utilizando um protocolo baseado em um protocolo de bloco de mensagem do servidor (SMB).System according to claim 1, characterized in that the redirector sends the transaction with the request using a protocol based on a server message block (SMB) protocol. 8. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que o protocolo suporta operações de arquivo remoto não transacionadas.System according to claim 7, characterized by the fact that the protocol supports non-transacted remote file operations. 9. Método para implementar uma operação de arquivo remoto transacionada em um dispositivo local, o método sendo CARACTERIZADO por compreender: receber uma requisição para uma operação de arquivo remoto transacionada compreendendo: recuperar uma transação; conduzir a transação; enviar a transação com a requisição para um dispositivo remoto através de uma rede; e receber a partir do dispositivo remoto, informação resultando a partir da operação de arquivo, em que o método compreende as seguintes etapas: uma aplicação gerando os dados faz uma chamada ou emite uma requisição para entregar a transação, e esta chamada ou requisição é passada para o gerenciador de transação; em que, em resposta, o gerenciador de transação gera uma notificação de preparo anterior; em que o redirecionador recebe a notificação de preparo anterior a partir do gerenciador de transação e, em resposta, atualiza os dados para o servidor via a rede, e em que o servidor passa os dados para um NTFS; em que um gerenciador de transação do servidor sinaliza ao redirecionador quando a operação de preparo anterior está completa; em que o redirecionador recebe uma notificação de preparo a partir do gerenciador de transação e envia uma mensagem de notificação de preparo para o servidor em resposta à notificação de preparo, a qual é passada para o gerenciador de transação do servidor, em que o gerenciador de transação do servidor passa a notificação de preparo para o NTFS; e em que a notificação de preparo causa que o cliente e o servidor armazenem os dados de um modo que permita aos dados serem entregues ou revertidos, em que os dados são então processados utilizando operações de entrega de duas fases.A method for implementing a transacted remote file operation on a local device, the method being characterized by: receiving a request for a transacted remote file operation comprising: retrieving a transaction; conduct the transaction; send the request transaction to a remote device over a network; and receiving from the remote device information resulting from the file operation, wherein the method comprises the following steps: an application generating the data makes a call or issues a request to deliver the transaction, and this call or request is passed to the transaction manager; wherein, in response, the transaction manager generates a previous staging notification; wherein the redirector receives the previous staging notification from the transaction manager and, in response, updates the data to the server via the network, and wherein the server passes the data to an NTFS; wherein a server transaction manager signals the redirector when the previous prepare operation is complete; where the redirector receives a staging notification from the transaction manager and sends a staging notification message to the server in response to the staging notification, which is passed to the server transaction manager, where the staging manager server transaction passes staging notification to NTFS; and wherein the staging notification causes the client and server to store the data in a manner that allows the data to be delivered or rolled back, wherein the data is then processed using two-phase delivery operations. 10. Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que determinar se um FCB existente pode ser utilizado para a requisição adicionalmente compreende determinar se o FCB existente está associado com uma transação neutra.A method according to claim 9, characterized in that determining whether an existing FCB may be used for the request further comprises determining whether the existing FCB is associated with a neutral transaction. 11. Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que determinar se um FCB existente pode ser utilizado para a requisição adicionalmente compreende comparar um nome de caminho e o contexto de transação para a requisição com um nome de caminho associado com o FCB existente.A method according to claim 9, characterized in that determining whether an existing FCB can be used for the request further comprises comparing a path name and transaction context for the request with a path name associated with the request. Existing FCB. 12. Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que o método é executado em um modo núcleo.A method according to claim 9, characterized in that the method is performed in a core mode. 13. Método, de acordo com a reivindicação 9, CARACTERIZADO adicionalmente por compreender indicar de forma seletiva na requisição que o dispositivo remoto deve sinalizar para a máquina local em resposta à uma operação de arquivo sendo executada no arquivo que foi requisitado por um dispositivo diferente do dispositivo local.A method according to claim 9, further characterized by comprising selectively indicating in the request that the remote device must signal to the local machine in response to a file operation being performed on the file that was requested by a device other than the device. local device. 14. Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que a transação é enviada com a requisição utilizando um protocolo baseado em um protocolo de bloco de mensagem do servidor (SMB).Method according to claim 9, characterized in that the transaction is sent with the request using a protocol based on a server message block (SMB) protocol. 15. Método, de acordo com a reivindicação 14, CARACTERIZADO pelo fato de que o protocolo suporta operações de arquivo remoto não transacionadas.Method according to claim 14, characterized in that the protocol supports non-transacted remote file operations.

Family

ID=

Similar Documents

Publication Publication Date Title
JP5307845B2 (en) Method and system for transaction processing file operations over a network
KR102438595B1 (en) File service using a shared file access-rest interface
Pfaff et al. The open vswitch database management protocol
US6061692A (en) System and method for administering a meta database as an integral component of an information server
US6751634B1 (en) Method and system for detecting object inconsistency in a loosely consistent replicated directory service
Braam et al. The intermezzo file system
US7591015B2 (en) Secure kernel transactions
US6611848B1 (en) Methods for maintaining data and attribute coherency in instances of sharable files
US6687716B1 (en) File consistency protocols and methods for carrying out the protocols
Pfaff Rfc 7047: The open vswitch database management protocol
Van Hensbergen et al. Grave Robbers from Outer Space: Using 9P2000 Under Linux.
US7539999B2 (en) Kernel-level transactions
BRPI0406404B1 (en) A system for supporting a transacted remote file operation between a local device and a remote device, and a method for implementing a transacted remote file operation on a local device
Adam Samba’s Way Toward SMB 3.0