CN1826593A - 通过网络以事务形式办理文件操作的方法与*** - Google Patents

通过网络以事务形式办理文件操作的方法与*** Download PDF

Info

Publication number
CN1826593A
CN1826593A CNA2004800013260A CN200480001326A CN1826593A CN 1826593 A CN1826593 A CN 1826593A CN A2004800013260 A CNA2004800013260 A CN A2004800013260A CN 200480001326 A CN200480001326 A CN 200480001326A CN 1826593 A CN1826593 A CN 1826593A
Authority
CN
China
Prior art keywords
file
affairs
request
remote equipment
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2004800013260A
Other languages
English (en)
Other versions
CN100465937C (zh
Inventor
P·J·马德哈瓦拉普
S·P·帕第卡尔
B·S·拉曼
S·弗尔马
J·卡基尔
J·拉库楚尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1826593A publication Critical patent/CN1826593A/zh
Application granted granted Critical
Publication of CN100465937C publication Critical patent/CN100465937C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Computer And Data Communications (AREA)

Abstract

一种通过网络执行以事务形式办理的远程文件操作的***包括客户机和服务器。该客户机与服务器的每一个包含事务管理器(TM)和文件***(FS)。该客户机还包括重定向器(RDR),而该服务器包括服务器应用程序(SRV)。RDR接收对远程事务文件操作的请求。作为响应,该RDR从该请求中检索事务。该RDR可使用TM来封送该事务,以向服务器发送。该RDR通过网络向服务器发送该事务。SRV组件接收该事务,服务器的TM和FS随即使用该事务来执行文件操作。随后,服务器通过网络向客户机返回该文件操作的结果。

Description

通过网络以事务形式办理文件操作的方法与***
技术领域
以下所述的各种实施例一般涉及网络通信,尤其但非排他地涉及启用通过网络的以事务形式办理的文件操作方法与***。
发明背景
一直以来,事务都由数据库和事务处理***所提供。通过将许多操作组合在一起成为单个原子操作,即,其每个单独操作的结果共同成败的一组操作,事务提供了一种应用程序编程人员需要的简化的失败模型。如果只有一个操作失败,无论有多少个操作与此事务相关联,该组中的所有操作的效果就被“撤销”或回退。对于任意数量的失败,都提供了操作之中的该一致性,且最终各个事务处理***到达两个状态之一,其中,要么应用所有的操作,要么不应用任何操作。
发明概述
依照各个所描述的实施例的各方面,提供了一种在一个网络上以事务形式办理文件操作的方法与***。在一方面,一计算平台(即,客户机)可以通过网络远程地访问另一计算平台(即,服务器)上的文件。在这一方面,该客户机和服务器的每一个包含一事务管理器(TM)和一文件***(FS)。客户机还包含一重定向器(RDR),而服务器包含一服务器组件(SRV)。
在操作中,重定向器(RDR)接收到对远程以事务形式办理的文件操作的请求。响应于此请求,RDR从请求中查寻此事务,并将此事务封送(marshal)以向服务器传送(例如,在一实现中由TM处理)。然后,RDR将事务信息(例如,在一实现中为封送二进制大对象(blob))通过网络发送到服务器。SRV接收该事务信息,然后其TM和FS用此信息进行文件操作。随即,服务器通过网络将文件处理结果返回给客户机。
另一方面,RDR允许对一个文件打开一个以上远程文件操作事务。当RDR接收到对以事务形式办理的远程文件操作的新请求,则RDR判定在此客户机上是否此远程文件的“脏”版本(即,已被写过的版本)已知。RDR随即使用该脏版本,而非文件的原始版本,用于新请求。在某些实施例中,对于一个给定的文件,RDR一次只允许打开单个以事务形式办理的写操作。
在又一个方面,RDR判定对以事务形式办理的远程文件操作的新请求是否可以使用在此客户机上已知的文件信息。如果可以使用相同的文件信息,则RDR就使用该同一文件信息,而非存储文件信息的另一副本。
在再一方面,RDR可以把机会锁与给定远程文件的事务相关联。在一个实施例中,该锁并不禁止本地服务器访问此文件,但会引发此服务器向客户机发送锁已被破坏的消息。RDR随即可检查对于给定的文件锁是否已被破坏,进而确定对以事务形式办理的远程文件操作的新请求是否可以使用已在此客户机上高速缓存的文件信息。
附图的简要描述
参考附图描述了非限制、非穷举实施例,其中,若非另外指明,贯穿各个视图,同样的参考标号是指同样的部件。
图1所示是可以使用以事务形式办理的远程文件操作的***的示例;
图2示出图1的***的客户机和服务器的组件的示例;
图3和图3A示出图2的客户机与服务器之间以事务形式办理的远程文件操作的示例处理流程;
图4示出图2的客户机和服务器的多个远程文件访问的示例;
图5示出通过网络进行事务的两阶段提交的示例处理流程;
图6示出实现事务管理的组件的示例;
图7示出内核级事务的示例处理流程;
图8示出一个安全特征的示例;以及
图9示出一个通用的计算机环境,根据不同的实施例,此环境可用以实现本文描述的各种技术。
较佳实施例的详细描述
示例环境示例
如前所述,在数据库与事务处理***中使用了事务,但在下述实施例中,事务被用于远程文件操作。图1示出了***100,其中,客户机可通过网络101在客户机上以事务形式办理文件操作。在图1的示例网络环境中,多个客户机计算设备105、110、115和120——或亦可称之为客户机设备——通过网络101与至少一个服务器设备125耦合。网络101用以代表各种常规网络的拓扑结构和类型的任意一种,包括有线和/或无线网络。网络101还可使用常规网络协议之中的任意一种,包括公有和/或私有协议。例如,网络101可以包含因特网,以及至少一个或多个局域网(LAN)、广域网(WAN)的部分。
客户机设备105可包括各种常规计算设备中的任意一种,包括但不限于,台式个人电脑(PC)、工作站、大型计算机、因特网设备和游戏控制台。此外,与网络101相关联的客户机设备还可包括个人数字助理(PDA)110、膝上计算机115以及蜂窝电话120,等等,这些设备可经由有线和/或无线链路与网络101进行通信。另外,客户机设备105、110、115和120的一个或多个可以包括同类设备,或者可以包括不同类设备。
服务器设备125可以向计算设备105、110、115和120提供各种数据和/或功能的任一种。这些数据可以是公开可用的或者可选择地受限的,例如,仅限于某些用户,或仅当支付了适当的费用时才可用,等等。
服务器设备125是网络服务器和应用程序服务器的至少一个,或两者的组合。服务器设备125是作为内容来源的任何设备,而客户机设备105、110、115和120包括接收此类内容的任何设备。因而,在一个对等网络中,作为内容来源的设备即称作服务器设备,而接收内容的设备即称作客户机设备。依照本文描述的示例实施例,这两类设备都能够加载并运行软件程序,包括操作***和应用程序。此外,数据与功能可以在客户机设备105、110、115和120之间共享。即,服务器设备125对各个客户机设备来说,并非仅有的数据和/或功能源。
在数据源130或135处,为服务器设备125或客户机设备105、110、115和120的任一个准备和/或提供了包括操作***和应用程序的软件程序,以供其执行。为保持一致性起见,如本领域中所已知的,此后的讨论均称之为“应用程序”,应用程序单独或组合地至少包括软件程序、操作***和应用程序中的任一个。此外,应用程序可以离线地从数据源130,或在线地从数据源135传播到服务器设备125。并且,应用程序通常在线地从服务器设备125或数据源135传播到客户机设备105、110、115和120。离线传播的装置和方法也是已知的。
依照下述的各种实施例,设备105、110、115、120和125中或在其之间的数据和功能的至少一个的传播可以被实现为事务。更具体地来说,事务是一组操作,它们在设备105、110、115、120和125之一内,或在诸如图1的示例等网络环境下,作为单个原子操作被同步或异步地执行。下面将结合图2-7,描述通过网络上以事务形式办理的远程文件操作的一个示例。
以事务形式办理的远程文件操作
图2示出了***100的两个设备(例如,从设备105、110、115、120和125中选出)的组件,上述设备作为客户机202和服务器204运行,目的是以事务形式办理的的远程文件操作。在此实施例中,客户机202和服务器204均使用MicrosoftWindows操作***的一个版本。在其它实施例中,可以使用不同的操作***。
在此实施例中,客户机202包含应用程序212、输入/输出(I/O)管理器214、文件***(FS)216、重定向器选择器218、事务管理器(TM)222以及重定向器(RDR)220。在此实施例中,服务器204包括服务器组件(SRV)234、I/O管理器214A、FS 216ATM 222A。在此实施例中,客户机202和服务器204可通过网络100(图1)相互通信。在某些实施例中,这些组件是用软件实现的。
在这个“Windows”实施例中,I/O管理器214和214A、FS 216和216A是由NT文件***(NTFS)实现的,而重定向器选择器218是由多重UNC供应器(MUP)实现的,其中UNC是统一命名协定的缩写。因而,重定向器选择器218在此亦称为MUP 218。另外,MicrosoftWindows操作***RDR和SRV(包含附加功能)分别实现了RDR 220和SRV 234。对于MicrosoftWindows操作***的RDR和SRV的示例性添加将会在下面描述。此外,在此实施例中,TM 222和TM 222A是作为内核层事务管理器来实现的,接下来将做更详细的描述。其它实施例可以使用不同的I/O管理器、文件***、重定向器选择器、TM和/或RDR。
图3示出客户机202和服务器204(见图2)之间以事务形式办理的远程文件操作的示例处理流程。参考图2和图3,根据一个实施例,以事务形式办理的远程文件操作如下执行。
在框302中,RDR 220接收对驻留在服务器204的文件进行以事务形式办理的文件操作的请求。典型的文件操作包括创建新文件、读文件、写文件、复制文件、重命名文件,等等。在此实施例中,对以事务形式办理的文件操作的请求是由应用程序212生成的,它是如图2所示的用户级应用程序。此请求使用包含事务上下文的字段的结构。I/O管理器214接收此请求,并判定此请求是针对本地文件还是远程文件。在此实施例中,I/O管理器214是MicrosoftWindows操作***的一个标准组件。例如,应用程序212可以通过以UNC名称(以\\server\share\subdirectory\filename的形式)对I/O管理器214的调用来作出请求。I/O管理器214随即将此请求传递给MUP 218。对一个事务可以有多个句柄,而对一给定文件亦可有多个事务。另一方面,如果此请求是针对客户机上的一个文件,则I/O管理器214将以标准方式把请求传递给NTFS 216。
然后,MUP 218查找执行该请求所需的重定向器。在此例中,重定向器是RDR220。在这个实施例中,MUP 218是MicrosoftWindows操作***的一个标准组件。在此实施例中,RDR 220是MicrosoftWindows操作***RDR的一个版本,但具有附加功能,因此RDR可TM 222交互来执行事务。这些附加功能包括以下能力,例如,从请求中为以事务形式办理的文件操作检索事务上下文、为以事务形式办理的文件操作分配FCB、通过网络向远程设备发送事务、为以事务形式办理的文件操作接收回复(包括文件标识符和版本标识符)、在TM 222指示下执行事务操作、以及向TM 222登记为资源管理器,从而RDR 220可以获知事务的状态。在某些实施例中,RDR 220如在共同提交且共同转让的待决美国专利申请第09/539,233号中描述的来实现,此专利申请于2000年3月30日提交,名为“Transacted FileSystem(以事务形式办理的文件***)”,申请号为[代理案卷号MS1-1781US]。登记为资源管理器将在下面描述。RDR 220包含用于缓冲事务的资源、高速缓存映射、文件控制块(FCB)、文件对象扩展(FOBX)以及处理事务和请求所需的其它结构。
在框304中,RDR 220从TM 222检索事务,并封送该事务以向客户机204发送。在一实施例中,RDR 220通过调用由TM 222对外设置的API(其实施例在下面进行描述)来检索事务,随后通过对事务信息进行格式化(例,封送二进制大对象)来封送该事务,以使用被扩展成支持事务的SMB协议的一个版本来发送。一个示例性实施例的SMB扩展将在下文结合表1-3进行总结。在框306,RDR 220向服务器204发送事务与请求,如箭头236所示。在框308,RDR 220从服务器204接收文件操作的结果。例如,服务器204发送对该请求的响应,此响应包含前述的文件和版本标识符。在此实施例中,SRV234是MicrosoftWindows操作***SRV的一个版本,但具有附加功能,因此SRV可经网络与客户机交互,以使用SMB的扩展来执行事务,包括在以事务形式办理的远程文件操作过程中向客户机传送文件和版本标识符。
  扩展   描述
  增加一个新命令:NT_TRANSACT_CREATE2增加一个新的能力位:CAP_TXFSMB FIND(寻找)请求增加一个新的标志:SMB_FIND_TRANSACTED_OPERATION。FIND请求(REQ_FIND_FIRST2)结构在表4中定义,响应结构在表5中定义。扩展ECHO(回显)命令,以发送事务状态改变的通知。此请求/响应结构在表6和表7中定义。   取一个已封送的事务,并通过网络发送两个结构:REQ_CREATE_WITH_EXTRA_OPTIONSRESP_CREATE_WITH_EXTRA_OPTIONS。这两个结构分别在表2和表3中定义,且是SMB结构的扩展:REQ_CREATE_WITH_SD_OR_EA和RESP_EXTENDED_CREATE+WITH_SD_OR_EACAP_TXF由服务器设置或重置,来表示此服务器是否支持事务。CAP_TXF是SMB协商响应的一部分。在此实施例中,CAP_TXF被定义为0x20000,以表示此服务器支持事务。SMB_FIND_TRANSACTED_OPERATION表事务正在使用中。之所以使用这个标志,是因为在此实施例中,寻找操作是基于路径而非基于句柄的。在此实施例中,这个标志被定义为0x20。如果这个标志被置位,则在FIND和ECHO命令的最后发送事务信息。扩展SMBECHO命令是提供从服务器到客户机的事务操作的预准备、准备、提交、回退状态的通知。
表1
REQ_CREATE_WITH_EXTRA_OPTIONS
  字段   内容描述
  _ULONG(Flags)   创建标志NT_CREATE_xxx
  字段   内容描述
  _ULONG(RootDirectoryFid)ACCESS_MASK DesiredAccessLARGE_INTEGER AllocationSize_ULONG(FileAttributes)_ULONG(ShareAccess)_ULONG(CreateDisposition)_ULONG(CreateOptions)_ULONG(SecurityDescriptorLength)_ULONG(EaLength)_ULONG(NameLength)_ULONG(ImpersonationLevel)_Uchar SecurityFlags_ULONG(TransactionLength)_ULONG(EfsStreamLength)Uchar Buffer[1]Uchar Name[]   相对打开的可任选目录预期的访问(NT格式)初始分配大小,以字节计文件属性共享访问文件存在或不存在所采取的行动创建新文件的选项SD的长度,以字节计扩展属性(EA)的长度,以字节计名称的长度,以字符计安全服务质量(QOS)信息安全QOS信息已封送事务上下文的长度,以字节计已加密文件***($EFS)流的长度,以字节计文件名的缓冲区,在数据缓冲区中与DWORD(4字节)的边界对齐文件名(非以NUL结尾)
表2
RESP_CREATE_WITH_EXTRA_OPTIONS
  字段   内容描述
  Uchar OplockLevelUchar ExtendedResponse_USHRT(Fid)_ULONG(CreateAction)_ULONG(EaErrorOffset)TIME CreationTime   授予的机会锁级别对于扩展响应设为1文件ID所采取的行动EA错误的偏移量文件创建的时间
  字段   内容描述
  TIME LastAccessTimeTIME LastWriteTimeTIME ChangeTime_ULONG(FileAttributes)LARGE_INTEGER AllocationSizeLARGE_INTEGER EndOfFile_USHORT(FileType)_USHORT(DeviceState)BOOLEAN DirectoryUchar VolumeGuid[16]Uchar FieldId[8]_ULONG(MaximalAccessRights)_ULONG(GuestMaximalAccessRights)LARGE_INTEGER FilesystemFid;_ULONG(VersionNum)   文件被访问的时间文件最近一次被写入的时间文件最近一次改变的时间文件属性所分配的字节数文件偏移量的结尾文件的文件类型IPC设备(例,管道)的状态若此结构是目录,则为TRUE卷GUID(全局唯一ID)文件ID会话所有者的访问权限客人最大的访问权限服务器上的NTNTFS Fid,用以区分有着同样路径名的不同文件。当使用事务(TxF)时,同样的路径名可能指两个不同的文件。所打开文件的TxF版本号
表3
REQ_FIND_FIRST2
 字段   内容描述
 _USHORT(SearchAttributes)_USHORT(SearchCount)_USHORT(Flags)   搜索属性返回的最大条目数附加信息:位设置为0-此请求后停止搜索1-到达终点则停止搜索2-返回继续键
 字段   内容描述
 _USHORT(InformationLevel)_ULONG(SearchStorageType)Uchar Buffer[1]   信息级别搜索储存类型文件名
表4
RSP_FIND_FIRST2
 字段   内容描述
 _USHORT(Sid)_USHORT(SearchCount)_USHORT(EndOfSearch)_USHORT(EaErrorOffset)_ULONG(SearchStorageType)_USHORT(LastNameOffset)   搜索句柄返回条目数量上一条目已返回否?若有EA错误,则为EA列表的偏移量搜索储存类型如果服务器需要继续搜索,则为对上一条目的文件名的数据偏移量;否则为0
表5
REQ_ECHO
字段   内容描述
Uchar WordCount_USHORT(SearchCount)_USHORT(EndOfSearch)_USHORT(EaErrorOffset)_USHORT(LastNameOffset)   参数词计数=1返回的条目数量上一条目已返回否?若有EA错误,则为EA列表的偏移量如果服务器需要继续搜索,则为对上一条目文件名的数据的偏移量;否则为0
表6
RSP_ECHO
 字段   内容描述
 Uchar WordCount_USHORT(SequenceNumber)_USHORT(ByteCount)Uchar Buffer[1]   参数词计数=1此回显的序列号数据字节计数;最小=4回显的数据
                              表7
图3A根据一个实施例,更为详细地描述了框302(见图3)。在框312中,RDR 220为所请求的文件操作检索事务上下文。在打开以事务形式办理的的远程文件时,RDR 220判定事务是否已与此请求相关联。例如,在一个实施例中,是通过把事务附加到线程的方式来将其与请求相关联,但在其它实施例中,可以使用不同的方法来将事务与请求相关联。在一个实施例中,RDR 220通过检查此请求是否有与其相关联的事务句柄来执行这个操作。若有,则该请求被加入到已经存在的事务中。若无,RDR 220非事务请求的标准方式处理此请求。
RDR 220随即对此请求分配一FCB。如前所述,具有多个请求的多个事务可打开一给定文件。因而在框302(见图3)的一个实施例中,执行框314的操作,RDR 220可判定对是否有现存的FCB可用于该请求。在此实施例中,RDR 220检查请求的文件(即,路径名)及与作出请求的线程相关联的事务上下文是否与现存FCB的那些相匹配。例如,如果在同一事务中提出了两个对同一文件的写操作请求,则在处理第二个请求时,对于第一个请求应该已经存在FCB。因为两个操作都是写操作,同一个FCB可以同时被两者所使用。
如果在框314中,RDR 220判定存在具有同一事务上下文、同一文件(即,路径名)和同一版本的FCB,则在框316中,为该请求使用此现存FCB。在某些实现中,RDR 220会使用具有最新版本的FCB。例如,如果文件的读操作在尚未提交的同一文件的写操作之后,则RDR 220会使用当前由写操作所使用的文件的版本。这个方法考虑到对高速缓存的更高效率的利用。
然而,如果在框314中,无法为此请求使用现存的FCB,则在框318中,RDR为此请求创建一个新的FCB。在一个可选的实施例中,为每个请求创建一个新的FCB。
图4示出对于同一文件的多个尚未提交的事务请求的示例。如图4所示,操作401相对应于对文件的读操作的请求,。即,此文件操作是“读打开”。操作401有句柄H1和事务T1与其相关联。RDR 220(图2)所请求的文件版本记为版本A。假设对此文件,这是首个尚未提交的事务,则从服务器204(图2)中检索版本A,并将其缓存在客户机202中(见图2)。
之后,对于同一文件请求操作402。在此例中,操作402也是读操作,它具有句柄H2和事务T2。因为该事务与操作401的事务不同,因此RDR 220从服务器204再次检索该文件的版本A。
在此例中,然后在与操作402相同的事务中,对同一文件请求操作403。因此,操作403有句柄H3,且被加入到事务T2中。然而,此例中的操作403是写操作,因而RDR 220在本地记住(例,高速缓存)该文件的版本B。版本B有时被称为“脏版本”。
接下来,在与操作402和403的相同事务中,对于同一文件请求操作404。因而,操作404有句柄H4,且被加入到事务T2中。在此例中,操作404是读操作。在此实施例中,作为框314(见图3A)的结果,RDR 220会为操作404记住并可能高速缓存版本B。
在一个不同的事务中,对于同一文件请求操作405。因而,操作405有句柄H5,且被与一新事务T3相关联。因为该事务与先前的操作所属事务均不同,在一个实施例中,RDR 220再次从服务器204检索此文件的版本A。在另一实施例中,RDR 220无需向服务器204(图2)查询即可认识到版本A仍是当前版本,随即使用此“本地”版本A。例如,此可选的实施例可以使用机会锁,从而可以得知驻留在服务器204上的文件的任何更新的版本。即,RDR 220可以将一机会锁与该文件相关联,此锁并不禁止对服务器204上的文件的写操作,但引发服务器204发信号通知RDR 220该锁已被破坏。在这样的情况下,RDR 220从而得知版本A不再是当前版本。在又一实施例中,RDR 220可以向服务器204查询,以判定该文件的当前版本,然后重用与当前版本相关联的现存FCB。
接下来,在操作406中,提交事务T2。这具有改变服务器204上的版本的效果。在服务器204上存储的该新版本被记为版本C。如前所述,由于RDR 220在所有远程事务期间登记为资源管理器,因此RDR 220知道服务器204具有该文件的新版本。
接下来,在与操作401相同的事务中,对同一文件请求操作407。于是,操作407有句柄H6,且被加入到事务T1。然而,因为RDR 220知道服务器204上该文件的版本C,因此RDR 220为此操作记住并可能高速缓存版本C。在某些实施例中,RDR 220从服务器204检索版本C。
类似地,当由与操作405相同的事务对同一文件请求操作408时,操作408有句柄H7,且被加入到事务T3中。因为RDR 220知道服务器204上该文件的版本C,因此RDR 220也为该操作记住并可能高速缓存版本C。
图5示出依据一个实施例,如何将缓存在客户机202(见图2)的数据转储清除到(即,持久地保存)服务器204(图2)。参考图2和5,依据一个实施例,客户机202如下所述地地将数据转储清除到服务器204。
在框502中,生成数据的应用程序作出调用或者发出请求以提交事务。该调用或请求被传递给TM 222。作为响应,TM 222生成一个预准备通知(将在下面结合示例事务管理器进行描述)。
在此实现中,RDR 220从TM 222接收到预准备通知,如框504所示。作为响应,RDR 220通过网络将数据转储清除到SRV 234。SRV 234进而将数据传递给NTFS 216A。这些操作由框506表示。在某些实施例中,服务器204的TM 222A发信号通知RDR 220预准备操作何时完成。框504和506帮助确定在执行准备操作(将在下面结合示例事务管理器进行描述)前,要从客户机202写到服务器204的数据已在服务器204上存在。
在框508中,RDR 220从TM 222接收到准备通知(将在下面结合示例事务管理器进行描述)。在一个实施例中,响应于准备通知,RDR 220向服务器204发送准备通知的消息,此消息被传递给TM 222A。TM 222A进而将该准备通知传递给NTFS 216A。这些操作由框510和512表示。该准备通知使得客户机202和服务器204以如下方式存储数据,即允许数据被提交或被回退。在某些实施例中,服务器204的TM 222A发信号通知RDR 220准备操作何时完成。随即使用标准的两阶段提交操作(例,使事务被提交或中止的操作)来处理数据,如框514所示。
尽管在上文中,事务管理被描述成使用单独的TM组件(即,TM 222和222A)来执行,然而在其它实施例中,事务管理的基础结构可被集成到文件***的基础结构中。且在上述的集成实施例中,事务消息(例,预准备、准备、提交、中止等等,如下所述)在传输信道上随文件消息一同流动。
示例事务管理器
图6示出依照一个实施例在执行事务时所用的组件。组成特定事务的一组操作共有一些至少为本领域技术人员所知的属性,这些特性缩写为“ACID”,包括有“原子性”、“一致性”、“隔离性”以及“持久性”。更具体地:从事务中相应操作所得的数据更新要么都是永久性的,要么无一是永久性的(原子性);事务使底层数据处于一致的状态(一致性);事务更新的效果对其它并发运行的操作不可见,直到整个事务变为永久(隔离性);以及,当事务的输出已被确定的情况下,结果可确保不再改变(持久性)。
图6的内核级事务管理示例针对分布式事务的例子,此分布式事务牵涉一个以上设备,且需维持事务所期望的“ACID”特征。此外,尽管图6的示例参考了内核对象,然而此例绝非仅限于由内核对象所实现的事务。更具体地,此处所描述的事务可由内核对象之外的其它对象所实现,或者可由不同种类的事务管理器实现。
在图6中,对应于客户机应用程序600的事务至少使用在第一设备上的事务管理器605,以及第二设备上的客户机应用程序600B和事务管理器635。客户机应用程序600B与客户机应用程序600相关联。相互通信的事务管理器605和635可以是内核对象的集合,这些内核对象维护关于所有事务和资源的状态信息,此外还协调客户机应用程序与相关联的资源管理器(RM)之间的交互或协议。
图6的示例中的资源管理器,包括RM 625和RM 630,维护能够以稳定状态存储数据的至少一个底层资源的状态。这类资源的非排他示例包括数据库和消息队列。在图6的示例实施例中的第一设备中,RM 625对应于资源627;RM 630对应于资源632;在第二设备中,RM 655对应于资源657。
如图6所示,第一设备上的事务管理器605包括以下内核对象:事务对象(TX)610,资源管理器对象(RMO)615以及登记对象(EN)620;第二设备上的事务管理器635包括以下内核对象:TX 640,RMO 645以及EN 650。TX代表特定的事务,并可由参与此事务的操作打开。
RMO代表参与特定事务的资源。RMO对事务的参与包括接收两阶段提交消息。此外,RMO是持久的,因而对应的事务管理器知道哪个事务的输出结果可被发送到对应的RM。或者,RMO可以是暂时性的,从而使得客户机应用程序能够无需越过失败来管理持久性RMO,就可订阅事务通知流。
EN代表事务与资源管理器间的关系。资源管理器通过在其上创建登记来表示它将参与此事务。当RMO被请求对特定事务执行操作(例如准备、提交,等等),它使用EN来表示此参与。对特定事务,资源管理器可以有一个以上的登记对象(EN)。
参考图6和7的示例对于内核环境,如下描述了被实现来确保事务能成功地更新所有适当的文件的两截断提交协议。特别地,在客户机应用程序600打开与第一设备上的事务管理器605相对应的内核对象,而SRV 234(图2)打开与第二设备上的事务管理器635相对应的内核对象之后,“准备”阶段705就开始了,此时事务中的每一RM从对应的事务管理器发送(705)“准备”命令。当接到警报,RM通过使资源数据处于持久状态,使得各个资源中的数据能够被“提交”或者“回退”,来作好准备(710)。准备好之后,RM发送(715)一个确认消息给对应事务管理器的TX。
当解决事务时,即执行“提交”阶段720,由此,该事务管理器的TX向每个相关联的RM发送(725)“已提交”或“中止/回退”的事务结果。RM随即将此结果记录在相关联的日志中,并且底层数据则根据该事务结果被提交或被回退。替换实施例可允许易失性的登记,即对其事务的数据不是持久性的,因而这些数据也不被记入日志或恢复。
内核级的事务管理可通过使用应用程序接口(API)来实现,这些API适用的***体系结构包括,但不限于,MicrosoftWin32应用编程接口和MicrosoftWindows操作***。此处描述的API通过基于句柄的接口来展现,“句柄”指的是为API所设的对象。此外,除非明确地请求异步操作,否则相应内核对象——尤其是TX和RMO——的操作都是同步的。另外,对应于事务的不同实施例的操作可由此处描述的一个或多个API的各种组合来实现。亦即,某些实施例可以使用此文所描述的所有API,而其它实现可以使用其不同的组合。
下面将提供用来在TX内核对象上实现操作的API,以及API功能的对应描述(相关例程的更为详尽的描述将在之后进行):
·PreprepareEnlistment:亦称作“阶段0”处理,请求TX向所有相关联的RM发送预准备消息;
·PrepareEnlistment:请求TX向所有已登记的RM发送准备请求;
·CreateTransaction:打开新TX;
·OpenTransaction:打开已存在的TX;
·CommitTransaction:请求提交TX;
·RollbackTransaction:请求TX中止或回退该事务;
·SavepointTransaction:请求TX保存该事务状态;
·GetTransactionInfo:检索关于该TX的信息;以及
·SetTransactionInfo:设置关于该TX的信息。
下面将提供对RMO内核对象实现操作的API,以及对该API功能的相应描述(相关例程的更为详尽的描述将在之后进行):
·CreateResourceManager:创建表示资源的新RMO;
·OpenResourceManager:打开已存在的RMO;
·DestroyREsourceManager:销毁RMO,使之不再持久;
·GetResourceManagerInfo:检索关于RMO的信息;
·SetResourceMangerInfo:设置关于RMO的信息;
·CreateEnlistment:使RMO加入到一个事务中,并检索相关通知;以及
·GetNotificationResourceManager:排队等候并返回可用RM通知。
下面将提供用于在加入事务后由RMO内核对象在TX内核对象上实现操作的API,以及对该API功能的相应描述(相关例程更为详尽的描述将在之后进行):
·PrePrepareComplete:表明RM已完成了对应事务管理器所请求的预准备;
·PrepareComplete:表明RM已完成了对应事务管理器所请求的事务准备;
·RollbackComplete:表明RM已完成对应事务管理器所请求的对已执行事务工作的回退;以及
·CommitComplete:表明RM已完成对应事务管理器所请求的对事务的提交。
不幸的是,与用于实现事务管理的内核对象TX、RMO以及EN相关联的API可能会使一个或多个内核对象暴露在各种安全攻击之下。例如,恶意或无效的RM可以把自己登记到事务中,从而导致通过不响应函数调用,或强制事务中断的服务拒绝攻击。因而,涉及图6中的更进一步的说明性示例针对安全、内核级分布式事务。
图6的实施例通过向相应内核对象的至少一个应用安全描述符,为易受攻击的内核对象进一步提供一种安全解决方案,该描述符可包含访问控制列表(ACL)。
在第一设备中,向TX 610应用ACL 660,向RMO 615应用ACL 665,并向EN 620应用ACL 670。在第二设备中,向TX 640应用ACL 675,向RMO 645应用ACL 680,并向EN 650应用ACL 685。
ACL定义了特定用户或用户组被允许或拒绝通过特定对象行使的“权限”。更具体地,如图8的示例ACL 810所示,应用或附加到内核对象的ACL至少包括访问控制条目(ACE),该条目包含对应的安全标识符(SID)和一组对应的权限。图8中的ACE条目1-12分别包括了对应的SID 1-12,以及对应的权限1-12。
SID 1-12标识了可以试图在应用该ACL的内核对象上实现一个操作或一系列操作的用户或用户组。权限1-12指定了能够由此SID所标识的用户或用户组可对相应内核对象执行的一个操作或一系列操作,并进一步指定了该一个或多个操作对所标识的用户或用户组的可访问性。即,权限1-12可表明所标识的用户或用户组被允许执行指定的操作,或所标识的用户或用户组被禁止执行指定的操作。
下面是可由应用于TX的ACL中的权限1-12所指定的示例操作的列表,紧接着是该操作功能的描述。权限1-12进一步指定,对由相应SID所标识的用户或用户组,该操作在TX上是被允许或拒绝的。
·TRANSACTION_QUERY_INFORMATION:获得关于TX的信息;
·TRANSACTION_SET_INFORMATION:设置关于TX的信息;
·TRANSACTION_ENLIST:在此事务中向TX登记;
·TRANSACTION_COMMIT:使所有与TX相关联的数据更新为持久的;
·TRANSACTION_ROLLBACK:中止,即,回退TX上的操作;
·TRANSACTION_PROPOGATE:从TX向另一对象发送数据;
·TRANSACTION_SAVEPOINT:保存该事务的当前点;以及
·TRANSACTION_MARSHAL:向另一设备发送关于该事务的数据。
下面是应用于RMO的ACL中的权限1-12所指定的示例操作的列表,紧接着是该操作功能的描述。权限1-12进一步指定,对由相应SID所标识的用户或用户组,该操作在RMO上是被允许或拒绝的。
·RESOURCEMANAGER_QUERY_INFORMATION:获得关于RMO的信息;
·RESOURCEMANAGER_SET_INFORMATION:设置关于RMO的信息;
·RESOURCEMANAGER_RECOVER:在事务失败的时刻确定事务的状态;
·RESOURCEMANAGER_ENLIST:在事务中登记RMO;
·RESOURCEMANAGER_GET_NOTIFICATION:当事务被解决后,从事务管理器接收通知;
·RESOURCEMANAGER_REGISTER_PRORTOCOL:在事务中注册RMO所支持的协议;以及
·RESOURCEMANAGER_COMPLETE_PROPOGATION:根据事务解决设置资源。
下面是应用于EN的ACL中的权限1-12所指定的示例操作的列表,紧接着是该操作功能的描述。权限1-12进一步指定,对由相应SID所标识的用户或用户组,该操作在EN上是被允许或拒绝的。
·ENLISTMENT_QUERY_INFORMATION:获得关于EN的信息;
·ENLISTMENT_SET_INFORMATION:设置关于EN的信息;
·ENLISTMENT_RECOVER:在事务失败的时刻确定事务的状态;
·ENSLITMENT_REFERENCE:获得并引用(或解除引用)登记键;
·ENLISTMENT_SUBORDINATE_RIGHTS:回退事务并响应通知;以及
·ENLISTMENT_SUPERIOR_RIGHTS:执行高级事务管理器将执行的操作;
例如启动预准备、准备,或事务中的高级回退操作。
因此,每个内核对象TX、RMO以及EN可有分别对其应用的ACL。因而,当API试图在内核对象的相应一个上启动操作时,必须使该ACL有权确定,对于发起该API的用户或用户组,此操作是被允许还是被拒绝。
更特定情况下,当打开句柄来执行操作时,对照ACL中的SID来检查对应于该API的用户或用户组;生成被允许的操作的列表;然后对照对给定句柄上SID所允许的操作,来检查由该API所指示的操作。
用于保护内核对象间的事务管理并实施安全参数的替换实施例包括,依据MicrosoftWindows操作***的安全模型,向参与事务的内核对象应用安全描述符。
如上所述,这些API被展示为基于句柄的接口,此接口被用来实现该安全模型。下文包括对上面所列出的、可在TX内核对象上实现操作的API的更详尽的描述。这些描述包含了对例程、相应参数和返回值的描述。
PreprepareEnlistment
(IN PHANDLE               TransactionHandle;
IN PHANDLE                ResourceManagerHandle)
·该例程通过向所有相关联的RM发出预准备请求来请求对一个事务进行“预准备”。预准备给于有类似于高速缓存属性的RM在事务进入已准备状态前将其高速缓存转储清除到可能其它RM的机会,在准备状态中,下游的RM将不能再接受改变。
·如果此例程未被调用,而事务参与者请求阶段0处理,则发出预准备请求,以请求何时接收准备。然而,如果没有PreprepareEnlistment,包括类似于高速缓存的RM的某些配置可能导致分布式情况下的不必要的事务回退。
·自变量:
TransactionHandle:提供表示需预准备的事务的句柄;
ResourceManagerHandle:向预准备该事务的高级TM/CRM提供句柄。只有该高级TM/CRM能够在此事务上调用PrepareEnlistment、SuperiorCommitTransaction和SuperioRollbackTransaction。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_TOO_LATE
PrepareEnlistment
(IN PHANDLE                   TransactionHandle;
IN PHANDLE                    ResourceMangerHandle);
·该例程通过向所有与其相关联的ResourceManager(资源管理器)发出准备请求,来请求“准备”事务。此请求启动了两阶段提交协议。
·发出PrepareEnlistment的事务参与者使得Transaction(事务)对象进入能够幸免于***或应用程序崩溃的持久状态;为能交付结果,在任何类型的失败后,前述参与者对该事务执行恢复。若不能满足此要求,可能导致资源泄漏,以及不一致的事务结果。
·自变量:
TransactionHandle:为需准备的事务提供一个句柄;和
ResourceManagerHandle:向正在准备该事务的TM提供一个句柄。如果该事务已(经由对PreprepareEnlistment的调用)被预准备,则ResourceManagerHandle将在调用中所使用的高级TM/CRM与PreprepareEnlistment匹配。并且在此事务中,只有调用该API的高级TM/CRM被允许调用SuperiorCommittransaction和SuperiorRollbackTransaction。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_TOO_LATE
STATUS_RM_NOT_RECOVERABLE
CreateTransaction
(OUT  PHANDLE               TransactionHandle,
IN    ULONG                 DesiredAccess OPTIONAL;
IN    POBJECT_ATTRIBUTES    ObjectAttfibutes OPTIONAL;
IN    ULONG                 CreateOptions OPTIONAL;
IN    PHANDLE               ResourceManagerHandle
OPTIONAL;
IN    NOTIFICATION_MASK     NotificationMask OPTIONAL;
IN    LPVOID                TransactionKey OPTIONAL)
·该例程创建一个新的Transaction对象,并返回此新对象的句柄。
·可选地(若指定ResourceManagerHandle参数),当其被成功创建后,此例程在该事务上执行“Join(加入)”操作。
·客户机用CloseHandle API来关闭该事务句柄。如果最后一个事务句柄关闭,且没有任何人在该事务上调用CommitTransaction,则该事务被隐式地回退。
·自变量:
TransactionHandle:提供指向将收到该新事务句柄的位置的指针。
DesiredAccess:提供指明期望的访问级别的掩码。有效的访问掩码选项有:
SYNCHRONIZE            可在此句柄上执行同步操作
TRANSACTION_COMMIT     可用此句柄提交事务
TRANSACTION_PREPARE    可用此句柄提交事务
TRANSACTION_ROLLBACK   可用此句柄中止事务
TRANSACTION_SAVEPOINT  可用此句柄为该事务创建保
                       存点
TRANSACTION_JOIN       可用此句柄作为RM加入该
                             事务
TRANSACTION_READ_ATTRIBUTES  可读与事务相关联的属性
TRANSACTION_WRITE_ATTRIBUTES 可写与事务相关联的属性
ObjectAttributes:为一个可选对象属性结构提供一个指针;
CreateOptions:提供可选事务标记。有效的创建标志选项包括:
TRANSACTION_CREATE_PRESUMED_NOTHING    创建一个
                                      “假定为空”的
                                       事务
ResourceManagerHandle:提供接收关于指定事务的通知的ResourceManager的句柄;
NotificationMask:指明该资源管理器关于此事务所希望接收的通知;以及
TransactionKey:指定该RM所希望与此事务的任何通知一同接收的不透明指针值。RM可以此将通知与在该RM地址空间中的某个对象相关联,从而避免每当通知出现都需要进行查找。
·返回值:
STATUS_SUCCESS
STATUS_INVALID_PARAMETER
STATUS_OBJECT_NAME_COLLISION
STATUS_OBJECT_NAME_INVALID
STATUS_PRIVILEGE_NOT_HELD
STATUS_INSUFFICIENT_RESOURCES
OpenTransaction
(OUT  PHANDLE               TransactionHandle,
IN    ACCESS_MASK           DesiredAccess,
IN    POBJECT_ATTRIBUTES    ObjectAttributes
IN    PHANDLE               ResourceManagerHandle
optional,
IN    NOTIFICATION_MASK     NotificationMask optional,
IN    LPVOID                TransactionKey optional);
·此例程查询一个存在的Transaction对象,然后返回此Transaction的句柄。调用者在ObjectAttributes的ObjectName字段中指定GUID的字符表示。
·可选地(若指定了ResourceManagerHandle参数),当该事务被打开后,此例程也在该事务上执行“Join”的操作。
·客户机用CloseHandle API来关闭该事务句柄。如果最后一个事务句柄关闭,且没有人在该事务上调用CommitTransaction,则该事务被隐式地回退。
·自变量:
TransactionHandle:提供一个指向若打开操作成功则将收该事务句柄的位置的指针。
DesiredAccess:提供指定期望的访问级别的掩码。
ObjectAttributes:提供指向可任选对象属性结构的指针;
ResourceManagerHandle:提供接收关于指定事务的通知的ResourceManager的句柄;
NotificationMask:指定该ResourceManager对于此事务可接收的通知;以及
TransactionKey:可任选地指定该RM希望与此事务的任何通知一同接收的不透明指针值。该RM可以此将通知与在该RM地址空间中的某个对象相关联,从而避免每当通知出现都需要进行查找。
·返回值:
STATUS_SUCCESS
STATUS_INVALID_PARAMETER
STATUS_OBJECT_NAME_INVALID
STATUS_OBJECT_NAME_NOT_FOUND
STATUS_OBJECT_PATH_SYNTAX_BAD
STATUS_PRIVILEGE_NOT_HELD
STATUS_INSUFFICIENT_RESOURCES
CommitTransaction
(IN   PHANDLE               TransactionHandle,
IN    ULONG                 CommitOptions Optional);
·此例程请求提交与TransactionHandle相关联的事务。已被打开或创建的任何事务句柄可用Transaction Commit所期望的访问来提交。因为并不存在规定只有事务的创建者才允许提交它的限制。
·如果所讨论的事务先前未发出PrepareEnlistment请求,则可在所有登记的RM上启动两阶段提交协议。此调用可被视为由客户机所发出的单阶段提交请求。
·若事务先前已通过PrepareEnlistment被准备,则此例程不被调用。只有调用PrepareEnlistment的RM可以用例程SuperiorCommitTransaction来解析事务状态。
·自变量:
TransactionHandle:提供标明要提交的事务的句柄;以及CommitOptions:COMMIT_RETAINING事务将被提交。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_TRANSACTION_ABORTED
RollbackTransaction
(IN   PHANDLE                 TransactionHandle,
IN    SAVEPOINT               SavePoint            Optional,
IN    ROLLBACK_REASON         RollbackReason       Optional);
·此例程请求将与TransactionHandle相联的事务回退。如果指定可任选的SavePoint,且是有效的保存点,则此回退可以是部分回退。NULL的SavePoint参数表明该事务应被完全回退或中止。可提供可任选的RollbackReason结构;这将被保留在Transaction对象中,并可由感兴趣的事务参与者通过调用GetInformationTransaction来检索。
·自变量:
TransactionHandle:提供指明应被回退的事务的句柄;
SavePoint:提供指明事务的状态应当被回退到什么程度的SavePoint的名称;以及
RollbackReason:提供回退理由。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_TRANSACTION_COMMITTED
SavepointTransaction
(IN   PHANDLE                 TransactionHandle,
IN    LONG                    SavepointFlags Optional,
OUT   LPSAVEPOINT             SavePoint);
·此例程请求为与TransactionHandle相关联的事务生成一个“保存点”;该保存点用作后续的回退请求的目标。
·自变量:
TransactionHandle:提供指明对其应当建立保存点的事务的句柄;
SavepointFlags:可任选地提供影响保存点生成的一组标记;以及
SavePoint:提供指向储存保存点标识符的位置的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_TRANSACTION_COMMITTED
STATUS_TM_TRANSACTION_ABORTED
QueryInformationTransaction
(IN   HANDLE                  TransactionHandle,
IN    TRANSACTION_INFORMATION_CLASS
TransactionInformationClass,
OUT   PVOID                   TransactionInformation,
IN    ULONG                   TransactionInformationLength,
 OUT  PULONG                         ReturnLength Optional);
·此例程返回关于由TransactionHandle所表示的Transaction对象的请求信息。
·自变量:
TransactionHandle:提供指明对其请求信息的事务的句柄;
TransactionInformationClass:说明请求关于该Transaction对象的哪一类消息;
TransactionInformation:提供指向保存所请求的事务信息的缓冲区的指针。
TransactionInformationLength:说明TransactionInformation所指向的缓冲区的长度;以及
ReturnLength:提供指向将接收写到TransactionInformation缓冲区的信息的长度的位置。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID_INFO_CLASS
STATUS_INFO_LENGTH_MISMATCH
SetInformationTransaction
(IN   TRANSACTION_INFORMATION_CLASS
TransactionInformationClass,
IN    PVOID                    TransactionInformation,
IN    ULONG                    TransactionInformationLength);
·此例程设置关于TransactionHandle所表示的Transaction对象的请求信息。
·自变量:
TransactionHandle:提供指明将更改其信息的事务的句柄;
TransactionInformationClass:指明正在请求的是关于该Transaction对象的哪一类信息;
TransactionInformation:提供指向保存所请求的事务信息的缓冲区的指针。
TransactionInformationLength:说明由TransactionInformation所指向的缓冲区的长度;以及
ReturnLength:提供指向将接收写到TransactionInformation缓冲区的信息的长度的位置的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID INFO_CLASS
STATUS_INFO_LENGTH_MISMATCH
下文包括对上面所列的在RMO内核对象上实现操作的API的更详尽描述。这些描述包括例程、对应自变量和返回值的描述。
CreateResourceManager
(OUT  PHANDLE                     ResourceMangerHandle,
IN    ACCESS_MASK                 DesiredAccess         Optional,
IN    POBJECT_ATTRIBUTES          ObjectAttributes,
IN    ULONG                       CreateOptions         Optional,
IN    RM_NOTIFICATION_ROUTINE     NotificationRoutine
Optional);
·此例程创建一个表示资源的新ResourceManager对象。
·ResourceManager对象亦担当关于RM所加入的事务的TM通知的端点;RM通过调用GetNotificationResourceManager来请求这些通知。
·ResourceManager通常是永久性的对象,即,每次(***或RM的)失败后,该对象必须被重新打开并且执行恢复。可通过指定RESOURCEMANAGER_NO_RECOVERY选项来创建ResourceManager对象的暂时性版本。暂时性RM不被强制或允许执行恢复。不可恢复RM选项允许应用程序或者RM接收关于事务进度的通知(例,PREPREPARE(预准备),PREPARE(准备),COMMIT(提交)),而无需被要求实现记录准备和执行恢复的完全复杂性。
·自变量:
ResourceManagerHandle:提供指向将接收新ResourceManager的句柄的位置的指针。
DesiredAccess:提供说明预期的访问级别的掩码。有效的访问掩码选项包括有:
SYNCHRONIZE                        同步句柄上的操作
RESOURCE_MANAGER_DESTROY           销毁该资源管理器
RESOURCE_MANAGER_READ_ATTRRIBUTES  读与资源管理器相
                                   关联的属性
RESOURCE_MANAGER_WRITE_ATTRIBUTES  写与资源管理器相
                                   关联的属性
ObjectAttributes:指定新RM对象的属性;这包括RM名;
CreateOptions:为已创建的对象指定选项;
RESOURCEMANAGER_NO_RECOVERY:ResourceManager对象是非永久性的,且不执行恢复操作;
RESOURCEMANAGER_COMMUNICATION:ResourceManager知道如何与其它计算机通信。ResourceManager可以用来封送或解封送(unmarshall)事务;
RESOURCEMANAGER_CLUSTER_RECOVERY:ResourceManager知道如何将失败到此群集中的其它节点的结果读出/发送到日志文件;以及
NotificationRoutine:指定当通知对该ResourceManager可用时要调用的通知例程。
·返回值:
STATUS_SUCCESS
STATUS_INVALID_PARAMETER
STATUS_OBJECT_NAME_COLLISION
STATUS_OBJECT_NAME_INVALID
STATUS_PRIVILEGE_NOT_HELD
STATUS_INSUFFICIENT_RESOURCES
OpenResourceManager
(OUT  PHANDLE                 ResourceManagerHandle,
IN    ACCESS_MASK             DesiredAccess          Optional,
IN    POBJECT_ATTRIBUTES      ObjectAttributes,
IN    ULONG                   OpenOptions            Optional,
IN    RM_NOTIFICATION_ROUTINE           NotificationRoutine
Optional);
·此例程依名称打开一个存在的ResourceManager对象。如果目标ResourceManager对象是永久性的,但目前未打开,则此对象最初处于“恢复中”的状态,必须被恢复;当恢复完成,必须调用RecoveryCompleteResourceManager。
·自变量:
ResourceManagerHandle:提供指向将接收现存ResourceManager对象句柄的位置的指针;
DesiredAccess:提供说明对此对象所期望的访问的掩码。
ObjectAttributes:为该新RM对象指定属性;
OpenOptions:指定该对象的选项。有效选项包括有:
    RESOURCE_MANAGER_DET       该资源管理器接收详细的恢
    AILED_RECOVERY_NOTIFIC     复通知(包含关于通信端点
    ATIONS                     的附加信息),而非普通的
                               恢复通知;以及
    NotificationRoutine        指定当通知对此
                               ResourceManager可用时要
                               调用的通知例程。
·返回值:
STATUS_SUCCESS
STATUS_INVALID_PARAMETER
STATUS_OBJECT_NAME_INVALID
STATUS_OBJECT_NAME_NOT_FOUND
STATUS_OBJECT_PATH_SYNTAX_BAD
STATUS_PRIVILEGE_NOT_HELD
STATUS_INSUFFICIENT_RESOURCES
DestroyResourceManager
(IN   PHANDLE              ResourceManagerHandle);
·此例程销毁ResourceManager对象,使之不再持久。
·自变量:
ResourceManagerHandle:提供指明要销毁的ResourceManager对象的句柄。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_NEEDS_RECOVERY
QueryInformationResourceManager
(IN   HANDLE            ResourceManagerHandle,
IN    RESOURCEMANAGER_INFORMATION_CLASS
ResourceManagerInformationClass,
OUT   PVOID                     ResourceManagerInformation,
IN    ULONG                     ResourceManagerInformationLength,
OUT   PULONG                    ReturnLength              Optional);
·此例程返回关于由ResourceManagerHandle表示的RMO的请求信息。
·自变量:
ResourceManagerHandle:提供指明对其请求信息的ResourceManager的句柄;
ResourceManagerInformationClass:指明被请求的是关于该ResourceManager对象的哪类信息;
ResourceManagerInformation:提供指向存储所请求的ResourceManager信息的缓冲区的指针;
ResourceManagerInformationLength:说明由ResourceManagerInformation所指向的缓冲区的长度,以及
ReturnLength:提供指向接收写到该ResourceManagerInformation缓冲区中的信息的长度的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_INFALID_INFO_CLASS
STATUS_INFO_LENGTH_MISMATCH
SetInformationResourceManager
(IN   HANDLE         ResourceManagerHandle,
IN    RESOURCEMANAGER_INFORMATION_CLASS
                     ResourceManagerInformationClass,
IN    PVOID          ResourceManagerInformation,
IN    ULONG          ResourceManagerInformationLength);
·此例程设置关于由ResourceMaaagerHandle表示的RMO的请求信息。
·自变量:
ResourceMaaagerHandle:提供指明对其修改信息的ResourceManager的句柄;
ResourceManagerInformationClass:指明请求关于ResourceMaaager对象的哪一类信息;
ResourceMaaagerInformation:提供指向存储所请求的ResourceMaaager信息的缓冲区的指针;以及
ResourceMaaagerInformationLength:指明由
ResourceMaaagerInformation所指向的缓冲区的长度。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_INFALID_INFO_CLASS
STATUS_INFO_LENGTH_MISMATCH
CreateEnlistment
(IN   PHANDLE               ResourceManagerHandle,
IN    PHANDLE               TransactionHandle,
IN    NOTIFICATION_MASK     NotificationMask,
IN    LPVOID                TransactionKey       Optional);
·此例程使RMO“加入”一特定事务,并接收与其相关的通知。
·CreateEnlistment的调用是幂等的,一个RM可多次调用此例程,以改变其NotificationMask或TransactionKey。对CreateEnlistment的后续调用替换了通知掩码和事务键,而无需在此事务上创建新登记。
·NotificationMask可被用于请求多次接收通知。例如,正在接收PREPREPARE通知的RM可以通过调用JoinTransaction并指定PREPREPARE标志来请求另一个通知。因而,一个RM可接收多个PREPREPARE请求。上述请求可被拒绝,如果该事务已进行至超过本应接收所请求的通知的点的话,拒绝该请求是合适的。例如,当某个RM已被通知进行准备时,请求预准备则不能被批准。
·自变量:
ResourceManagerHandle:向RM提供句柄,以接收关于此指定事务的通知;
TransactionHandle:提供该RM希望加入的事务的句柄;
NotificationMask:指定RM愿意接收的关于此事务的通知。有效的掩码如下所述,且各掩码可以用OR(或)组合:
TRANSACTION_NOTIFY_MASK_RM:RM所期望的公用通知(PREPARE、COMMIT、ROLLBACK、SAVEPOINT)
TRANSACTION_NOTIFY_MASK_CRM:CRM或高级TM所期望的公用通知(PrePrepare_Complete、PrepareComplete、CommitComplete、RollbackComplete、SavebackComplete)
TRANSACTION_NOTIFY_PREPREPARE:预准备通知
TRANSACTION_NOTIFY_PREPARE:准备通知
TRANSACTION_NOTIFY_COMMIT:提交通知
TRANSACTION_NOTIFY_ROLLBACK:回退通知
TRANSACTION_NOTIFY_PREPREPARE_COMPLETE:预准备完成的通知
TRANSACTION_NOTIFY_PREPARE_COMPLETE:准备完成的通知
TRANSACTION_NOTIFY_COMMIT_COMPLETE:提交完成的通知
TRANSACTION_NOTIFY_ROLLBACK_COMPLETE:回退完成的通知
TRANSACTION_NOTIFY_SAVEPOINT_COMPLETE:保存点完成的通知;以及
TransactionKey:指定该RM希望与关于此事务的任何通知一同接收的不透明指针值。该RM可以此将通知与该RM地址空间中的某个对象相关联,从而避免每次通知出现时都需要执行查找。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_PARAMETER
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_TOO_LATE
GetNotificationResourceManager
(IN   PHANDLE                       ResourceManagerHandle,
IN    PTRANSACTION_NOTIFICATION     TransactionNotification,
IN    PLARGE INTEGER                Timeout Optional);
·此例程排队等候并返回RM通知(如果有任何可用的话)。
·自变量:
ResourceManagerHandle:提供指明该为其返回通知的ResourceManager的句柄;
TransactionNotification:提供指向将被填入首个可用通知的TRANSACTION_NOTIFICATION结构的指针;以及
Timeout:提供一时间,当等待通知变为可用时,调用者在该时间之前希望阻塞。如果当该超时到期时仍未有通知,则调用者返回STATUS_TIMEOUT。
·返回值:
STATUS_SUCCESS
STATUS_TIMEOUT
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
下文包括对上面所列的、由RMO内核对象在加入事务后在TX内核对象上实现操作的API更详尽的描述。这些描述包例程,对应自变量和返回值的描述。
PrePrepareComplete
(IN       PHANDLE           EnlistmentHandle);
·此例程表明,RM已完成了KTM所请求的事务的预准备处理(也称作“阶段0”)。
·自变量:
TransactionHandle:提供指示对其已完成预准备操作的事务的句柄。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_NOT_REQUESTED
PrepareComplete
(IN      PHANDLE             EnlistmentHandle);
·此例程表明RM已完成该KTM所请求的事务的准备。
·自变量:
TransactionHandlel:提供指明对其完成了准备操作的事务的句柄。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_NOT_REQUESTED
RollbackComplete
(IN    PHANDLE           EnlistmentHandle);
·此例程表明该RM已成功地如所请求地完成了对由事务所执行的工作的回退。如果RM无法成功地如所请求地回退该事务,它应当通过RollbackTransaction发出对完全回退的请求。
·自变量:
TransactionHandle:提供指明对其完成该回退操作的事务的句柄。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_NOT_REQUESTED
CommitComplete
(IN    PHANDLE            EnlistmentHandle);
·该例程表明RM已完成了如所请求地提交由事务执行的工作。
·自变量:
TransactionHandle:提供指示对其完成提交操作的事务的句柄。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
STATUS_TM_NOT_REQUESTED
另外,可以为内核对象提供传播例程。下面是此类例程的示例。
RegisteredProtocolAddressInformation
(IN   HANDLE                  ResourceManager,
IN    PROTOCOL_ID             ProtocolId,
IN    ULONG                   ProtocolInformationSize,
IN    PVOID                   ProtocolInformation Optional);
·此例程将资源管理器注册为特定协议的通信资源管理器。此程序还将二进制大对象与此协议相关联。在一个给定机器上,对一个协议仅可注册一个资源管理器。
·自变量:
ResourceManager:提供我们正在注册的资源管理器的句柄;
ProtocolId:此GUID标识该协议;
ProtocolInformationSize:ProtocolInformation的大小;
ProtocolInformation:可任选的与此协议相关联的二进制大对象;
·返回值:
STATUS_SUCCESS
STATUS_INVALID_HANDLE
MarshallTransaction
(IN   PHANDLE                     TransactionHandle,
IN    ULONG                       NumberOfProtocols,
IN PPROTOCOL_ID                   ProtocolArray,
IN ULONG                          BufferLength,
IN PVOID                          Buffer,
OUT PULONG                        BufferUsed Optional);
·此例程请求与TransactionHandle相对应的事务的表示被串行化到缓冲区。
·自变量:
TransactionHandle:提供指明是对其完成了提交操作的事务的句柄;
NumberOfProtocols:指明该协议数组的大小;
ProtocolArray:PROTOCOL_ID(GUID)数组,此数组指定了可用于封送该事务的协议。此数组须按优先级排序——数组中第一个协议是首选的协议,第二个协议是第二优选的协议,等等;
BufferLength:提供可用的缓冲区长度;
Buffer:提供指向应储存该事务的串行化的缓冲区的指针;以及
BufferUsed:提供指向应储存写入到缓冲区的实际字节的位置的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
GetProtocolAddressInformation
(IN    ULONG            AddressBufferSize,
OUT    PVOID            AddressBuffer,
OUT    PULONG           AddressBufferUsed Optional);
·此例程请求将表示该机器上已注册的所有协议的信息串行化至AddressBuffer。然后此信息可被传递到其它机器,并用作PushTransaction的自变量,以将事务入栈到生成该AddressInformation的机器。
·自变量:
AddressBufferSize:提供可用缓冲的长度;
AddressBuffer:提供可得缓冲的长度;
AddressBufferUsed:提供指向保存该事务的串行化的缓冲区位置的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
PullTransaction
(OUT  PHANDLE             TransactionHandle,
IN    ULONG               NumberOfProtocols,
IN    PCRM_PROTOCOL_ID    ProtocolArray,
IN    ULONG               BufferLength,
IN    PVOID               Buffer);
·此例程请求由事务管理器使缓冲区中的串行化所表示的事务变为可用。当该事务已被已注册的资源管理器之一成功地传播,则返回该新Transaction对象的句柄。
·自变量:
TransactionHandle:提供指向应保存表示该新事务的句柄的位置的指针;
NumberOfProtocols:说明协议数组的大小;
ProtocolArray:PROTOCOL_ID(GUID)数组,此数组说明了用于封送该事务的协议。此数组须按优先级排序——数组中第一个协议是首选的协议,第二个协议是第二优选的协议,等等;
BufferLength:提供可用缓冲区的长度;
Buffer:提供指向保存该事务的串行化的缓冲区的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
PushTransaction
(IN   HANDLE                    TransactionHandle,
IN    ULONG                     NumberOfProtocols,
IN    PCRM_PROTOCOL_ID          ProtocolArray,
IN    ULONG                     DestimationInfoLength,
IN    PVOID                     DestinationInfo,
IN    ULONG                     ResponseBufferLength,
OUT   PVOID                     ResponseBuffer,
OUT   PULONG                    ResponseBufferUsed Optional,
OUT   PULONG                    PushCookie Optional);
·此例程请求用入栈风格传播将该事务传播至目的机器。协议将按照其在ProtocolArray中所列的顺序被使用,直至有一个成功。如果无一协议成功地将该事务传播至目的机器,则该例程返回失败。
·自变量:
TransactionHandle:提供指向应被传播至远程机器的事务对象的指针。
DestinationInfoLength:提供可用的DestinationInfo的长度;
DestinationInfo:提供指向存储该目的的“端点”信息的缓冲区的指针。这可以是从对目的机器上的GetProtocolAddressInformation的调用所收到的结果;
ResponseBufferLength:提供可用的ResponseBuffer的长度。
ResponseBuffer:提供指向保存该事务的串行化的缓冲区的指针;以及
PushCookie:提供指向储存表示入栈请求的cookie的缓冲区的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
GetPushTransactionBuffer
(IN   HANDLE                      TransactionHandle,
IN    ULONG                       PushCookie,
IN    ULONG                       ResponseBufferLength,
OUT   PVOID                       ResponseBuffer,
OUT   PULONG                      ResponseBufferUsed Optional);·如果对PushTransaction的初始调用收到STATUS_BUFFER_TOO_SMALL返回代码,则此调用被用来检索对PushTransaction的调用的输出。在那种情况下,调用者将调用GetPushTransactionBuffer,并传入充足的缓冲区大小。
·自变量:
TransactionHandle:提供指向储存表示新事务的句柄的位置的指针;
ResponseBufferLength:提供可用缓冲区的长度;以及
ResponseBuffer:提供指向储存该事务的串行化的缓冲区的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
PropagationComplete
(IN   HANDLE                EnlistmentHandle,
IN    ULONG                 RequestCookie,
IN    ULONG                 BufferLength,
IN    PVOID                 Buffer);
·当CRM成功地完成传播完事务后,此例程由CRM调用。
·自变量:
TransactionHandle:提供指向储存表示新事务的句柄的位置的指针;
RequestCookie:提供在原始PROPAGATE通知自变量中接收到的RequestCookie,来指明已完成哪一个请求。
BufferLength:指明可用缓冲区的长度;以及
Buffer:提供指向保存该事务的串行化的缓冲区的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
PropagationFailed
(IN   HANDLE             ResourceManagerHandle,
IN    ULONG              RequestCookie,
IN    STATUS             PropStatus);
·CRM使用此例程来说明其未能如所请求地传播事务。
·自变量:
TransactionHandle:提供指向储存表示新事务的句柄的位置的指针;
BufferLength:提供可用缓冲区的长度;以及
Buffer:提供指向保存该事务的串行化的缓冲区的指针。
·返回值:
STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE
STATUS_INSUFFICIENT_RESOURCES
示例性计算环境
图9示出了一个通用计算机环境900,此环境可用来实现此文所描述的技术。计算机环境900仅仅是计算环境的一个示例,并非暗示了对该计算机和网络体系结构的使用范围和功能的任何限制。也不能认为计算机环境900对在示例计算机环境900环境中示出的任一组件或其组合具有任何依赖性或需求。
计算机环境900包括计算机902形式的通用的计算设备。计算机902的组件可包括但不限于,一个或多个处理器或处理单元904、***存储器906、以及将包括处理器904在内的各种***组件与***存储器906耦合的***总线098。
***总线908表示一个或多个各种类型的总线结构,包括存储器总线或存储器控制器、外设总线、加速图形端口、以及使用任何总线体系结构的处理器或局部总线。作为例子,此类体系结构可包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、亦称作Mezzanine总线的***部件互连(PCI)总线、PCI Express总线、通用串行总线(USB)、安全数字(SD)总线或IEEE 1394(即火线)总线。
计算机902可包括各种计算机可读介质。此类介质可以是计算机902可访问的任何介质,包括易失性或非易失性介质、可移动或不可移动介质。
***存储器906包括易失性存储器形式(例如随机存取存储器(RAM)910);和/或非易失性存储器(例如只读存储器(ROM)912或闪存RAM))形式的计算机可读介质。基本输入/输出***(BIOS)914存储于ROM 912或闪存RAM中,BIOS包含例如在启动时,帮助在计算机902内各元件间传递信息的基本例程。RAM 910通常含有处理单元904即时可访问和/或当前正在操作的数据和/或程序模块。
计算机902可包含其它可移动/不可移动,易失性/非易失性计算机存储介质。作为例子,图9示出了可读出与写入到不可移动,非易失性的磁介质(未画出)的硬盘驱动器916、可读出与写入到可移动,非易失性磁盘920(例,软盘)的磁盘驱动器918、以及可读出并/或写入到可移动,非易失性的光盘924(例如CD-ROM、DVD-ROM或其它光介质)的可移动,非易失性光盘驱动器922。硬盘驱动器916,磁盘驱动器918以及光盘驱动器922分别通过一个或多个数据介质接口925连接到***总线908。可选择地,硬盘驱动器916、磁盘驱动器918以及光盘驱动器922可由一个或多各接口(未画出)连接到***总线908。
盘驱动器及其相关联的计算机可读介质为计算机902提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。尽管示例中示出了硬盘916、可移动磁盘920以及可移动光盘924,然而可以理解,可存储计算机可访问的数据的其它类型的计算机可读介质也可被用以实现该示例计算***和环境,这些介质诸如磁带盒或其它磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其它光存储、随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)等等。
任意数量的程序模块可被存储于硬盘916、磁盘920、光盘924、ROM 912和/或RAM 910中,这些程序模块包括,例如操作***926、一个或多个应用程序928、其它程序模块930以及程序数据932。这些操作***926、一个或多个应用程序928、其它程序模块930以及程序数据932的每一个(或其某种组合)都可以根据上述示例实施例来制定事务,以实现支持分布式文件***的全部或部分常驻组件。
用户可通过输入设备,例如键盘934和定位设备936(例,“鼠标”),向计算机902输入命令和信息。其它输入设备938(未具体示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、串行端口、扫描仪和/或其它类似设备。上述及其它输入设备通过与***总线908耦合的输入/输出接口940连接到处理单元904,但也可通过例如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。
显示器942或其它类型的显示设备也可通过如视频适配器944之类的接口连接到***总线908。除显示器942之外,其它输出***设备可包括例如扬声器(未示出)和打印机946等,这些设备可通过I/O接口940连接到计算机902。
计算机902可使用到一个或多个远程计算机,如远程计算设备948的逻辑连接在网络化环境下运作。举例来说,远程计算设备948可以是PC、,便携式计算机、服务器、路由器、网络计算机、对等设备或其它普通网络节点等等。这里将远程计算设备948描述成可包含许多或所有相对于计算机902所描述的元件和特征的便携式计算机。可选地,计算机902也可在非网络化环境下运作。
计算机902和远程计算机948之间的逻辑连接被描述成局域网(LAN)950和普通广域网(WAN)952。对于办公室、企业内部计算机网络、内联网和因特网来说,这样的网络环境是很常见的。
当于LAN网络环境下实现时,计算机902通过网络接口或适配器954连接到局域网950。当于WAN网络环境下实现时,计算机902通常包含调制解调器956,或用于通过广域网952建立通信的其它装置。调制解调器956对计算机902来说可以是内部的,亦可是外部的,它可通过I/O接口940或其它适当的机制连接到***总线908。图示的网络连接只是示例,也可使用在计算机902与948间建立至少一个通信链路的其它装置。
在如相对于计算环境900所示的网络环境中,相对于计算机902所描述的程序模块或其一部分可以被存储在远程存储器存储设备中。举例来说,远程应用程序958驻留在远程计算机948的存储器设备中。为说明目的,应用或程序及其它可执行程序组件,例如操作***,在此均被示出为分离的框,尽管可以认识到,这些程序与组件在不同的时刻驻留于计算设备902的不同储存组件中,且被计算机的至少一个数据处理器执行。
各种模块和技术在此处可以在诸如由一个或多个计算机或其它设备执行的程序模块等计算机可执行指令的上下文中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据结构。这些程序模块及其类似物可作为本机代码执行,也可在如虚拟机器或其它当场(just-in-time)编译执行环境中被下载并执行。通常,程序模块的功能可按不同实施例的期望被组合或分发。
这些模块与技术的实现可以被存储于某种形式的计算机可读介质或通过其发送。计算机可读介质可以是计算机可访问的任何可用介质。作为示例而非局限,计算机可读介质可包含“计算机储存介质”和“通信介质”。
“计算机存储介质”包括易失性和非易失性,可移动和不可移动介质,这些介质可以用用于储存诸如计算机可读指令、数据结构、程序模块与其它数据等信息的任何方法或技术来实现。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、盒式磁带、磁带磁盘存储或其它磁存储设备、或可用于存储期望信息且可被计算机访问的任何其它介质。
“通信介质”通常在诸如载波或其它传输机制等已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据。通信介质也包括任何信息传递介质。术语“已调制数据信号”意指其一个或多个特征以对信号中的信息编码的方式被设置或改变的信号。仅作为一个非限制性的示例,通信介质包括有线介质,例如有线网络或直通连接,以及无线介质,例如声学,RF,红外及其它无线介质。任意上述介质的组合也包含在计算机可读介质范畴中。
贯穿此说明书,参考了“一个实施例”,“实施例”,或“示例实施例”,意指被详细描述的特征、结构或特性被包括在本发明的至少一个实施例中。因而,这类短语的使用可以指示不止一个实施例。此外,所描述的特征、结构或特性可在一个或多个实施例中以任何适当方式组合。
然而,相关领域的技术人员可以意识到,本发明无需一个或多个具体细节即可实现,或以其它方法、资源、材料等也可实现。在其它情况下,纯粹为避免使本发明的各方面模糊不清,众所周知的结构、资源或操作并未被详细示出或描述。
尽管示出并描述了本发明的示例实施例和应用,然而必须明白,本发明并不受上述精确配置和资源的限制。本领域的技术人员可以在不偏离要求保护的本发明的精神和分为的情况下,对此处揭示的本发明的方法与***中的排列、操作与细节进行各种修正、修改与变更。

Claims (58)

1.一种支持本地设备与远程设备之间的以事务形式办理的远程文件操作的***,其特征在于,所述***包括:
一事务管理器;以及
一重定向器,用以接收对驻留在所述远程设备上的文件执行文件操作的请求,所述本地和远程设备连接到网络,其中,在事务中,所述重定向器通过所述网络向所述远程设备发送请求。
2.如权利要求1所述的***,其特征在于,所述事务管理器未被集成到文件***中。
3.如权利要求1所述的***,其特征在于,所述重定向器从所述远程设备接收文件信息,所述文件信息包括与所述文件相关联的文件***标识符(Fid)和版本标识符。
4.如权利要求3所述的***,其特征在于,所述重定向器选择性地创建一与所述文件相关联的文件控制块(FCB),所述FCB包括与所述文件相关联的Fid和版本标识符信息。
5.如权利要求4所述的***,其特征在于,所述重定向器判定对所述请求是否可以使用一现存的FCB。
6.如权利要求5所述的***,其特征在于,所述重定向器判定对所述请求是否可以使用一与未提交事务相关联的现存FCB。
7.如权利要求5所述的***,其特征在于,所述重定向器在判定对所述请求是否可以使用一现存FCB时,将所述请求的路径名和事务上下文与和所述现存FCB相关联的路径名进行比较。
8.如权利要求1所述的***,其特征在于,所述事务管理器是内核级事务管理器。
9.如权利要求1所述的***,其特征在于,所述重定向器在所述请求中选择性地指出,响应于在所述文件上执行不由所述重定向器请求的文件操作,所述远程设备应该发信号通知所述本地设备。
10.如权利要求1所述的***,其特征在于,所述重定向器使用基于服务器消息块(SMB)协议的协议向发送所述事务请求。
11.如权利要求10所述的***,其特征在于,所述协议支持非以事务形式办理的远程文件操作。
12.一种其上储存如权利要求1所述的组件的计算机可读介质。
13.一种支持本地设备与远程设备之间的以事务形式办理的远程文件操作的***,其特征在于,所述***包括:
一服务器组件(SRV),用以从一远程设备接收请求,所述请求用于驻留在所述本地设备中的文件上的以事务形式办理的文件操作;
一事务管理器;以及
一文件***,它响应于所述SRV组件和事务管理器,在所述文件上执行所请求的文件操作,所述本地和远程设备连接到网络。
14.如权利要求13所述的***,其特征在于,所述SRV组件向所述远程设备提供与所述文件相关联的文件***标识符(Fid)以及版本标识符。
15.如权利要求13所述的***,其特征在于,所述事务管理器是内核级事务管理器。
16.如权利要求13所述的***,其特征在于,响应于在所述文件上执行不由所述远程设备请求的文件操作,所述文件***选择性地引发所述SRV组件发信号通知所述远程设备。
17.如权利要求13所述的***,其特征在于,所述SRV组件使用基于服务器消息块(SMB)协议的协议发送所述事务及请求。
18.如权利要求17所述的***,其特征在于,所述协议支持非以事务形式办理的远程文件操作。
19.一种在其上储存了如权利要求12所述的组件的计算机可读介质。
20.一种实现本地设备上的以事务形式办理的远程文件操作的方法,其特征在于,所述方法包含:
接收对以事务形式办理的远程文件操作的请求;
检索事务;
封送所述事务;通过网络向远程设备发送所述事务与所述请求;以及
从所述远程设备接收得自所述文件操作的信息。
21.如权利要求20所述的方法,其特征在于,从所述远程设备接收的信息包括文件标识符(Fid)和版本标识符。
22.如权利要求21所述的方法,其特征在于,接收对以事务形式办理的远程文件操作的请求还包括:
判断所述请求是否用于远程设备上的文件操作;
如果所述请求用于远程设备上的文件操作,则为所述请求提供名称;以及
选择性地创建一与所述文件相关联的文件控制块(FCB),所述FCB包含与所述文件相关联的Fid和版本标识符信息。
23.如权利要求22所述的方法,其特征在于,选择性地创建FCB还包括判断是否有一现存FCB可用于所述请求。
24.如权利要求23所述的方法,其特征在于,判断是否有现存FCB可用于所述请求还包括判断所述现存FCB是否与一未提交的事务相关联。
25.如权利要求23所述的方法,其特征在于,判断是否有现存FCB可用于所述请求还包括为将所述请求的路径名和事务上下文与关联于所述现存FCB的路径名进行比较。
26.如权利要求20所述的方法,其特征在于,所述方法是在内核模式中执行的。
27.如权利要求20所述的方法,其特征在于,还包括响应于在所述文件上执行由不同于所述本地设备的设备所请求的文件操作,选择性地在所述请求中指明所述远程设备应当发信号通知所述本地设备。
28.如权利要求20所述的方法,其特征在于,所述事务是使用基于服务器消息块(SMB)协议的协议与所述请求一起发送的。
29.如权利要求28所述的方法,其特征在于,所述协议支持非以事务形式办理的远程文件操作。
30.一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于执行以下操作:
接收对以事务形式办理的远程文件操作的请求;
检索事务;
封送所述事务;
通过网络向远程设备发送所述事务与所述请求;以及
从所述远程设备接收得自所述文件操作的信息。
31.如权利要求30所述的计算机可读介质,其特征在于,,从所述远程设备接收到的信息包括文件标识符(Fid)和版本标识符。
32.如权利要求31所述的计算机可读介质,其特征在于,接收对以事务形式办理的远程文件操作的请求还包括:
判断所述请求是否用于远程设备上的文件操作;
如果所述请求用于远程设备上的文件操作,则为所述请求提供名称;以及
选择性地创建一与所述文件相关联的文件控制块(FCB),所述FCB包含与所述文件相关联的Fid和版本标识符信息。
33.如权利要求32所述的计算机可读介质,其特征在于,选择性地创建FCB还包括判断是否有一现存的FCB可用于所述请求。
34.如权利要求33所述的计算机可读介质,其特征在于,判断是否有现存FCB可用于所述请求还包括判断所述现存FCB是否与一未提交事务相关联。
35.一种实现本地设备与远程设备之间的以事务形式办理的远程文件操作的方法,其特征在于,所述方法包含:
从远程设备接收请求,所述请求用于驻留在所述本地设备中的文件上的以事务形式办理的文件操作,所述本地与远程设备连接到网络;以及
对所述文件执行所请求的文件操作,所述文件操作是所述事务的一部分。
36.如权利要求35所述的方法,其特征在于,还包括向所述远程设备提供与所述文件相关联的文件***标识符(Fid)和版本标识符。
37.如权利要求35所述的方法,其特征在于,所述方法是在内核模式中执行的。
38.如权利要求35所述的方法,其特征在于,还包括响应于在所述文件上执行不由所述远程设备请求的文件操作,选择性地发信号通知所述远程设备。
39.如权利要求35所述的方法,其特征在于,所述本地与远程设备使用一基于服务器消息块(SMB)协议的协议,通过网络上选择性地进行通信。
40.如权利要求39所述的方法,其特征在于,所述协议支持非以事务形式办理的远程文件操作。
41.一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于执行以下操作:
从远程设备接收请求,所述请求用于驻留在所述本地设备中的文件上的以事务形式办理的文件操作,所述本地和远程设备连接到网络;以及
对所述文件执行所请求的文件操作,所述文件操作是所述事务的一部分。
42.如权利要求41所述的计算机可读介质,其特征在于,所述操作还包括向所述远程设备提供与所述文件相关联的文件***标识符(Fid)和版本标识符。
43.如权利要求41所述的计算机可读介质,其特征在于,所述操作是在内核模式中执行的。
44.如权利要求41所述的计算机可读介质,其特征在于,所述操作还包括响应于在所述文件上执行不由所述远程设备所请求的文件操作,选择性地发信号通知所述远程设备。
45.一种支持连接到网络的本地设备和远程设备之间以事务形式办理的远程文件操作的***,其特征在于,所述***包括:
用于管理事务的装置;以及
用于向所述远程设备发送请求和事务,以对驻留于所述远程设备中的文件执行文件操作的装置。
46.如权利要求45所述的***,其特征在于,还包括用于从所述远程设备接收文件信息的装置,所述文件信息包括与所述文件相关联的文件***标识符(Fid)和版本标识符。
47.如权利要求46所述的***,其特征在于,还包括选择性地创建一与所述文件相关联的文件控制块(FCB)的装置,所述FCB包括与所述文件相关联的Fid和版本标识符信息。
48.如权利要求47所述的***,其特征在于,还包括用于判断是否可一现存的FCB可用于所述请求的装置。
49.如权利要求48所述的***,其特征在于,还包括用于判断是否有一与未提交的事务相关联的现存FCB可用于所述请求的装置。
50.如权利要求45所述的***,其特征在于,还包括响应于在所述文件上执行不由所述重定向器请求的文件操作,选择性地在所述要求中指示所述远程设备应该发信号通知所述本地机器。
51.如权利要求13所述的***,其特征在于,所述事务管理器未被集成至文件***中。
52.一种用于通过网络执行事务文件操作时的方法,其特征在于,所述方法包括:
从驻留在第一计算平台中的事务管理器接收一预准备通知;
通过网络从所述第一计算平台向第二计算平台提供文件操作数据;
从驻留在所述第一计算平台的事务管理器接收一准备通知;以及
通过网络向所述第二计算平台提供一包含所述准备通知的消息。
53.一种用于通过网络执行以事务形式办理的文件操作的方法,其特征在于,所述方法包括:
接收事务信息;以及
通过网络向连接到所述网络的计算平台发送所述事务信息,以及创建或打开文件或目录的请求,所述述请求包括第一结构,所述第一结构包含保存事务上下文的字段,以及保存事务信息的长度的字段。
54.如权利要求53所述的方法,其特征在于,对所述请求的响应包括第二结构,所述第二结构包含保存文件标识符的字段,以及保存版本标识符的字段。
55.如权利要求53所述的方法,其特征在于,还包括接收一响应,所述响应包括指示连接到网络的所述计算平台是否支持以事务形式办理的文件操作的字段。
56.如权利要求53所述的方法,其特征在于,还包括通过网络向所述计算平台发送事务信息与寻找文件的请求,所述寻找文件的请求包括指示一事务正用于所述文件的字段。
57.如权利要求53所述的方法,其特征在于,还包括通过网络从所述计算平台接收消息,所述消息提供了来自连接到网络的所述计算平台的、关于事务状态改变的通知。
58.一种用于通过网络执行以事务形式办理的文件操作的方法,其特征在于,所述方法包括:
在第二计算平台中从第一计算平台接收一预准备通知;
向驻留在所述第二计算平台上的事务管理器提供所述预准备通知;
在所述第二个计算平台中通过网络从所述第一计算平台接收文件操作数据;
向驻留在所述第二计算平台上的文件***提供所述文件操作数据;
通过网络从所述第一计算平台接收一准备通知;以及
向驻留在所述第二计算平台上的事务管理器提供所述准备通知。
CNB2004800013260A 2003-10-24 2004-07-22 通过网络以事务形式办理文件操作的方法与*** Expired - Fee Related CN100465937C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/693,658 2003-10-24
US10/693,658 US7231397B2 (en) 2003-10-24 2003-10-24 Method and system for transacted file operations over a network

Publications (2)

Publication Number Publication Date
CN1826593A true CN1826593A (zh) 2006-08-30
CN100465937C CN100465937C (zh) 2009-03-04

Family

ID=34522451

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800013260A Expired - Fee Related CN100465937C (zh) 2003-10-24 2004-07-22 通过网络以事务形式办理文件操作的方法与***

Country Status (11)

Country Link
US (1) US7231397B2 (zh)
EP (2) EP2453373B1 (zh)
JP (2) JP4769191B2 (zh)
KR (1) KR101087415B1 (zh)
CN (1) CN100465937C (zh)
AU (3) AU2004279166B8 (zh)
BR (1) BRPI0406404A (zh)
CA (1) CA2501467C (zh)
MX (1) MXPA05006606A (zh)
RU (1) RU2380749C2 (zh)
WO (1) WO2005045738A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102346773A (zh) * 2011-09-23 2012-02-08 深圳市赫迪威信息技术有限公司 文件操作方法、控制器及文件操作***
CN106599323A (zh) * 2017-01-03 2017-04-26 北京百度网讯科技有限公司 在分布式文件***中实现分布式管道的方法和装置
CN108352995A (zh) * 2016-11-25 2018-07-31 华为技术有限公司 一种smb业务故障处理方法和存储设备
CN112948844A (zh) * 2021-01-28 2021-06-11 维沃移动通信有限公司 控制方法、装置及电子设备

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI282053B (en) * 2002-06-19 2007-06-01 Quanta Comp Inc Data reading/writing method by calling for service routine of basic input/output system
JP4365612B2 (ja) * 2003-04-15 2009-11-18 白光株式会社 電気部品着脱装置
EP1692602A4 (en) * 2003-10-31 2007-10-24 Landmark Technology Partners I INTELLIGENT CLIENT ARCHITECTURE COMPUTER SYSTEM AND METHOD
US8914459B2 (en) * 2004-04-14 2014-12-16 Hewlett-Packard Development Company, L.P. Redirecting I/O request to remote networked peripheral device
US7549171B2 (en) * 2004-06-10 2009-06-16 Hitachi, Ltd. Method and apparatus for validation of application data on a storage system
US9146773B2 (en) * 2004-12-06 2015-09-29 Sap Se System and method for implicit transaction control
US7818301B2 (en) * 2004-12-17 2010-10-19 International Business Machines Corporation Method, system and article of manufacture for rolling back past a boundary generator to a savepoint located in a unit of work
US7949551B2 (en) * 2005-04-06 2011-05-24 International Business Machines Corporation Processing of compensation scopes in workflow management systems
US8316129B2 (en) 2005-05-25 2012-11-20 Microsoft Corporation Data communication coordination with sequence numbers
WO2007014296A2 (en) * 2005-07-25 2007-02-01 Parascale, Inc. Scalable distributed file storage access and management
US8112394B2 (en) * 2005-10-14 2012-02-07 Oracle International Corporation Long-lived data transactions
US8370456B2 (en) * 2006-09-22 2013-02-05 Microsoft Corporation Intelligent pre-fetching using compound operations
US7865949B2 (en) * 2007-01-18 2011-01-04 Microsoft Corporation Provisional administrator privileges
US20080183662A1 (en) * 2007-01-31 2008-07-31 Benjamin Clay Reed Resolving at least one file-path for a change-record of a computer file-system object in a computer file-system
WO2009043029A2 (en) 2007-09-28 2009-04-02 Xcerion Aktiebolag Network operating system
US9027030B2 (en) 2007-11-29 2015-05-05 Red Hat, Inc. Commit-one-phase distributed transactions with multiple starting participants
US8639734B1 (en) 2008-03-31 2014-01-28 Symantec Operating Corporation Use of external information about a file to determine virtualization
US8438196B1 (en) 2008-03-31 2013-05-07 Symantec Operating Corporation Finer grained data organization using data sublayers
US8688641B1 (en) * 2008-03-31 2014-04-01 Symantec Operating Corporation Per user and per process layer visibility
CN103430511B (zh) * 2011-03-21 2017-03-08 汤姆逊许可公司 在包括多个设备的对等网络中复制数据的方法和设备
JP5799883B2 (ja) 2011-06-16 2015-10-28 コニカミノルタ株式会社 接続制御装置、情報処理装置、画像形成装置、携帯型移動端末、情報処理システム、接続制御装置の制御方法、及び接続制御装置の制御プログラム
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) * 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8924443B2 (en) * 2012-10-05 2014-12-30 Gary Robin Maze Document management systems and methods
US9262237B2 (en) * 2013-12-17 2016-02-16 International Business Machines Corporation Automating software availability management based on API versioning
US10255339B2 (en) * 2013-12-23 2019-04-09 Telefonaktiebolaget Lm Ericsson (Publ) Data change controller
US11410176B2 (en) * 2014-06-27 2022-08-09 Tigergraph, Inc. System and method for enhanced detection of fraudulent electronic transactions
US9501386B2 (en) * 2014-12-26 2016-11-22 Microsoft Technology Licensing, Llc System testing using nested transactions
KR20180060804A (ko) 2016-11-29 2018-06-07 삼성전자주식회사 전자장치, 전자장치의 제어방법 및 기록매체
RU2749754C1 (ru) * 2020-09-23 2021-06-16 Владимир Саулович Айзин Резервированное серверное устройство

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265261A (en) * 1989-08-14 1993-11-23 Microsoft Corporation Method and system for network communications using raw mode protocols
US5261051A (en) * 1989-08-14 1993-11-09 Microsoft Corporation Method and system for open file caching in a networked computer system
GB2281644A (en) * 1993-09-02 1995-03-08 Ibm Fault tolerant transaction-oriented data processing.
US6317773B1 (en) * 1994-10-11 2001-11-13 International Business Machines Corporation System and method for creating an object oriented transaction service that interoperates with procedural transaction coordinators
CA2275574C (en) * 1996-12-20 2003-07-29 Financial Services Technology Consortium Method and system for processing electronic documents
US6061708A (en) * 1997-05-31 2000-05-09 International Business Machines Corporation System and method for supporting mixed-phase transactions in an object-oriented environment
US6070174A (en) * 1997-09-30 2000-05-30 Infraworks Corporation Method and apparatus for real-time secure file deletion
US5958004A (en) * 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components
US6529932B1 (en) * 1998-04-01 2003-03-04 Microsoft Corporation Method and system for distributed transaction processing with asynchronous message delivery
GB2339622A (en) * 1998-07-15 2000-02-02 Ibm Client/server computing with transactional interface between legacy and non-legacy systems
GB2346990B (en) * 1999-02-20 2003-07-09 Ibm Client/server transaction data processing system with automatic distributed coordinator set up into a linear chain for use of linear commit optimization
US6553384B1 (en) * 1999-06-14 2003-04-22 International Business Machines Corporation Transactional name service
US6463456B1 (en) * 1999-09-01 2002-10-08 International Business Machines Corporation Efficient registration for distributed transaction systems
JP4400970B2 (ja) * 1999-11-22 2010-01-20 若井産業株式会社 ナットの包装方法と包装体
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
AU5837700A (en) * 2000-07-18 2002-01-30 Fundsworld Financial Services Ltd. A method of performing financial transactions by means of a telecommunication network and a system implementing the method
US6970939B2 (en) * 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US7437429B2 (en) * 2001-02-13 2008-10-14 Microsoft Corporation System and method for providing transparent access to distributed authoring and versioning files including encrypted files
US7337441B2 (en) * 2001-07-17 2008-02-26 Bea Systems, Inc. System and method for prepreparing a transaction process involving a chain of servers in a circular flow
CN1411238A (zh) * 2002-05-31 2003-04-16 华为技术有限公司 通信设备输出重定向的实现方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102346773A (zh) * 2011-09-23 2012-02-08 深圳市赫迪威信息技术有限公司 文件操作方法、控制器及文件操作***
CN102346773B (zh) * 2011-09-23 2013-10-02 深圳市赫迪威信息技术有限公司 文件操作方法、控制器及文件操作***
CN108352995A (zh) * 2016-11-25 2018-07-31 华为技术有限公司 一种smb业务故障处理方法和存储设备
CN108352995B (zh) * 2016-11-25 2020-09-08 华为技术有限公司 一种smb业务故障处理方法和存储设备
US10789138B2 (en) 2016-11-25 2020-09-29 Huawei Technologies Co., Ltd. SMB service fault processing method and storage device
CN106599323A (zh) * 2017-01-03 2017-04-26 北京百度网讯科技有限公司 在分布式文件***中实现分布式管道的方法和装置
CN106599323B (zh) * 2017-01-03 2020-04-10 北京百度网讯科技有限公司 在分布式文件***中实现分布式管道的方法和装置
CN112948844A (zh) * 2021-01-28 2021-06-11 维沃移动通信有限公司 控制方法、装置及电子设备

Also Published As

Publication number Publication date
EP1680745B1 (en) 2017-01-04
RU2380749C2 (ru) 2010-01-27
KR20060108204A (ko) 2006-10-17
US7231397B2 (en) 2007-06-12
KR101087415B1 (ko) 2011-11-25
EP1680745A2 (en) 2006-07-19
JP5307845B2 (ja) 2013-10-02
JP2007509409A (ja) 2007-04-12
BRPI0406404A (pt) 2005-08-09
AU2010236079B2 (en) 2011-11-24
AU2010236080B2 (en) 2011-11-17
EP2453373B1 (en) 2021-03-10
JP4769191B2 (ja) 2011-09-07
EP1680745A4 (en) 2010-02-03
AU2010236079A1 (en) 2010-11-25
EP2453373A2 (en) 2012-05-16
CA2501467C (en) 2011-08-30
AU2004279166A8 (en) 2008-10-02
AU2004279166B2 (en) 2010-07-29
CN100465937C (zh) 2009-03-04
JP2011134351A (ja) 2011-07-07
US20050091187A1 (en) 2005-04-28
AU2010236080A1 (en) 2010-11-18
EP2453373A3 (en) 2014-12-10
CA2501467A1 (en) 2005-04-24
MXPA05006606A (es) 2005-08-16
AU2004279166A1 (en) 2005-06-23
RU2005115972A (ru) 2006-01-20
WO2005045738A2 (en) 2005-05-19
WO2005045738A3 (en) 2006-02-09
AU2004279166B8 (en) 2010-11-25

Similar Documents

Publication Publication Date Title
CN1826593A (zh) 通过网络以事务形式办理文件操作的方法与***
CN1359489A (zh) 用于构筑建模工具的装置和方法
CN1524216A (zh) 软件构件插件程序结构的***和方法
CN1592230A (zh) 受控资源的授权管理
CN1679026A (zh) Web服务设备和方法
CN1869923A (zh) ***数据接口及相关体系结构
CN1870642A (zh) 数据通信协议
CN1269337C (zh) 内容自适应服务控制方法
CN1702634A (zh) 便利无环境主机干预下的可分页模式虚拟环境存储管理
CN1577324A (zh) 文档管理方法和程序、记录介质和文档管理装置
CN1672158A (zh) 使用多个传递媒体的成批通信过程
CN1624657A (zh) 安全相关的编程接口
CN1655145A (zh) 最优化行级别数据库安全的***和方法
CN1609795A (zh) 用于计算机平台的编程接口
CN101065727A (zh) 虚拟化窗口信息的方法和设备
CN1508696A (zh) 高速缓存一致性协议的非随机分布式冲突解决
CN1773545A (zh) 域名购买的基于消息的网络配置
CN1609802A (zh) 用于管理许可的编程接口
CN1534449A (zh) 网络***设备的***设备驱动程序维护方法
CN1728685A (zh) 促进可分页模式虚拟环境中的数据传输的方法和***
CN1669018A (zh) 手持终端框架***
CN1609794A (zh) 用于计算机平台的编程接口
CN1667575A (zh) 非集成工具的集成体系结构
CN1716225A (zh) 普通usb驱动器
CN1959631A (zh) 一种基于itron的应用软件自主装配技术

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150506

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150506

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090304

Termination date: 20200722

CF01 Termination of patent right due to non-payment of annual fee