JP2007509409A - ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム - Google Patents

ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム Download PDF

Info

Publication number
JP2007509409A
JP2007509409A JP2006536567A JP2006536567A JP2007509409A JP 2007509409 A JP2007509409 A JP 2007509409A JP 2006536567 A JP2006536567 A JP 2006536567A JP 2006536567 A JP2006536567 A JP 2006536567A JP 2007509409 A JP2007509409 A JP 2007509409A
Authority
JP
Japan
Prior art keywords
file
transaction
request
remote device
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
JP2006536567A
Other languages
English (en)
Other versions
JP4769191B2 (ja
Inventor
ヤナ マダバラプ プラディープ
パディカ シシール
セシュ ラマン バラン
ヴェルマ スレンドラ
カーギル ジョン
ラクチュール ヤコブ
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 Corp
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 JP2007509409A publication Critical patent/JP2007509409A/ja
Application granted granted Critical
Publication of JP4769191B2 publication Critical patent/JP4769191B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • 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)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

ネットワーク上でトランザクション処理リモートファイルオペレーションを実行するシステムは、クライアントおよびサーバを含む。このクライアントとサーバは、それぞれトランザクションマネージャ(TM)とファイルシステム(FS)を含む。クライアントはリダイレクタ(RDR)も含むが、サーバはサーバアプリケーション(SRV)を含む。RDRは、リモートトランザクション処理ファイルオペレーションを求める要求を受信する。それに応答して、RDRはこの要求からトランザクションを検索する。RDRは、TMを使用してサーバに送信するためにこのトランザクションをマーシャリングすることができる。RDRは、ネットワーク上でトランザクションをサーバに対して送信する。SRVコンポーネントは、トランザクションを受信し、次いでサーバのTMおよびFSはこのトランザクションを使用してファイルオペレーションを実行する。次いで、サーバはネットワークを介してファイルオペレーション結果をクライアントに対して戻す。

Description

以下に説明する様々な実施形態は、一般にネットワーク通信に関し、より詳細には、それだけには限定されないが、ネットワーク上のトランザクション処理ファイルオペレーションを可能にするための方法およびシステムに関する。
トランザクションは、長い間、データベースおよびトランザクション処理システムによって提供されてきている。トランザクションは、いくつかのオペレーションを1つの原始的オペレーションに、すなわち個々のオペレーションの結果がともに有効か、または共倒れとなるというオペレーションのグループに一緒にグループ分けすることによって、アプリケーションプログラマにとって望ましい簡略化された失敗モデルを提供する。
もし、ただ1つのオペレーションが失敗する場合には、そのグループ中におけるすべてのオペレーションの効果は、そのトランザクションに関連するオペレーション数にかかわらず、「元に戻され(undone)」、あるいはロールバックされる。オペレーションの間のこの連帯(solidarity)は、失敗の数がいくつの場合においても適用され、結局のところ各トランザクション処理システムは、これらのオペレーションのすべてが適用されている、あるいは、これらのオペレーションのいずれも適用されていないという2つの状態の内の、どちらか一方の状態に至る。
記載される様々な実施形態の態様によれば、ネットワーク上でファイルオペレーションをトランザクション処理する方法およびシステムが提供される。一態様によれば、コンピューティングプラットフォーム(すなわち、クライアント)は、ネットワークを介して、別のコンピューティングプラットフォーム(すなわち、サーバ)上のファイルに遠隔でアクセスすることができる。この態様によれば、これらクライアントおよびサーバはそれぞれ、TM(transaction managerトランザクションマネージャ)およびFS(file systemファイルシステム)を含んでいる。このクライアントは、RDR(redirectorリダイレクタ)も含んでいるが、このサーバは、SRV(server componentサーバコンポーネント)を含んでいる。
動作中においては、RDRは、リモートトランザクション処理ファイルオペレーション(remote transacted file operation)の要求を受信する。この要求に応答して、RDRはこの要求からのトランザクションについて調べ、(例えば、一実施形態におけるこのTMによって)サーバへ送信するためにこのトランザクションをマーシャリングする。次いでRDRは、ネットワーク上でこのトランザクション情報(例えば、一実施形態においてはマーシャリングブロブ(marshal blob))をサーバに送信する。SRVはトランザクション情報を受信し、次いでサーバのTMおよびFSは、トランザクション情報を使用してファイルオペレーションを実施する。次いで、サーバはネットワークを介してファイルオペレーションの結果をクライアントに返送する。
他の態様においては、RDRは、1つのファイルに対して複数のリモートファイルオペレーショントランザクションがオープンであるようにすることができる。RDRがトランザクション処理リモートファイルオペレーションを求める新しい要求を受信するとき、RDRは、リモートファイルの「ダーティ(dirty)」バージョン(すなわち、書き込まれているバージョン)が、クライアント上で知られているかどうかを判定する。次いで、RDRはファイルについて元のバージョンの代わりに、新しい要求に対するダーティバージョンを使用する。一部の実施形態においては、RDRは、1つのトランザクション処理されたライトオペレーションが所与のファイルについて一時にオープンであることを可能にするだけである。
さらに他の態様においては、RDRは、トランザクション処理されたリモートファイルオペレーションを求める新しい要求は、クライアント上ですでに知られているファイル情報を使用することができるかどうかを判定する。この同じファイル情報を使用することができる場合に、RDRは、このファイル情報のもう1つのコピーを記憶する代わりにこの同じファイル情報を使用する。
さらに他の態様においては、RDRは、所与のリモートファイルについてのトランザクションに便宜的ロックを関連づけることができる。一実施形態においては、このロックは、ローカルサーバがファイルにアクセスすることを妨げないが、サーバに、ロックが解除されているというメッセージをクライアントに対して送信させる。次いで、トランザクション処理リモートファイルオペレーションを求める新しい要求が、クライアント中にすでにキャッシュされているファイル情報を使用することができるかどうかを判定するに際し、RDRは所与のファイルについてロックが解除されたかどうかを検査することができる。
非限定的で非網羅的な実施形態について、以下の図を参照しながら説明する。別に指定をしていない限り、様々な図面全体にわたって、同一の参照番号は同一の要素を示している。
実施例のネットワーク環境
前述のように、トランザクションは、データベースおよびトランザクション処理システムにおいて使用されてきているが、以下の実施形態においては、トランザクションは、リモートファイルオペレーションのために使用される。図1は、クライアントがネットワーク101を介してクライアント上でファイルオペレーションをトランザクション処理することができるシステム100を示している。図1の実施例のネットワーク環境においては、クライアント装置と呼ぶこともできる複数のクライアントコンピューティングデバイス105、110、115、および120が、ネットワーク101を介して少なくとも1つのサーバ装置125に結合されている。ネットワーク101は、有線ネットワークおよび/または無線ネットワークを含むことができる様々な従来のネットワークトポロジおよびタイプのいずれをも表すことが意図されている。ネットワーク101はさらに、パブリックプロトコルおよび/または独自開発プロトコルを含めて、様々な従来のネットワークプロトコルのうちのいずれをも利用することができる。ネットワーク101は、例えばインターネット、ならびに場合によっては1つまたは複数のLAN(local area networkローカルエリアネットワーク)、WAN(wide area networkワイドエリアネットワーク)などの少なくとも一部分を含むことができる。
クライアント装置105は、それだけには限定されないが、デスクトップPC(personal computerパーソナルコンピュータ)、ワークステーション、メインフレームコンピュータ、インターネットアプライアンス、およびゲーミングコンソール(gaming console)を含めて様々な従来のコンピューティングデバイスのうちのいずれも含むことができる。さらに、ネットワーク101に関連するクライアント装置は、有線リンクおよび/または無線リンクによってネットワーク101と情報をやりとりすることができるPDA(personal digital assistant携帯型個人情報端末)110、ラップトップコンピュータ115、およびセルラ電話120などを含むことができる。さらにまた、1つまたは複数のクライアント装置105、110、115、および120は、これら同じタイプのデバイス、または代わりの異なるタイプのデバイスを含むことができる。
サーバ装置125は、コンピューティングデバイス105、110、115および120に対して、様々なデータおよび/または機能のうちのいずれも提供することができる。このデータは、パブリックに利用可能であり、あるいは代わりに制限されることもあり、例えばあるユーザだけに制限され、または適切な料金が支払われる場合にしか利用可能でないなどのこともある。
サーバ装置125は、ネットワークサーバ、およびアプリケーションサーバ、またはその両者による組合せのうちの少なくとも1つである。サーバ装置125は、コンテンツのソースとなる任意のデバイスであり、クライアント装置105、110、115および120は、このようなコンテンツを受信する任意のデバイスを含んでいる。したがって、ピアツーピアネットワークにおいて、このコンテンツのソースとなるこのデバイスは、サーバ装置と呼ばれ、このコンテンツを受信するデバイスは、クライアント装置と呼ばれる。両方のタイプのデバイスは、本明細書中で説明される実施形態の例に従って、オペレーティングシステムおよびアプリケーションを含めて、ソフトウェアプログラムをロードし実行することが可能である。さらに、データおよび機能は、クライアント装置105、110、115および120の間で共有することができる。すなわち、サービス装置125だけが、各クライアント装置に対するデータおよび/または機能のソースであるというわけではない。
データソース130または135において、オペレーティングシステムおよびアプリケーションを含めてソフトウェアプログラムが、実行するためにサーバ装置125またはクライアント装置105、110、115、および120のうちのどれか1つのために作成され、かつ/またはそのどれか1つに対して提供される。一貫性をもたせるために、以下の説明では、当技術分野において知られているように、単独または組合せのいずれでも、少なくともソフトウェアプログラム、オペレーティングシステム、およびアプリケーションのどれかを包含する「アプリケーション」について言及している。さらに、これらのアプリケーションは、データソース130からのものとしてオフラインで、または、データソース135からのものとしてオンラインで、サーバ装置125に対して配布される。さらにまた、これらのアプリケーションは、一般にサーバ装置125またはデータソース135からオンラインでクライアント装置105、110、115、および120に対して配布される。これらのオフラインによる配布のための手段および方法についても同様に知られている。
以下で説明する様々な実施形態によれば、共にデバイス105、110、115、120、125における、またはその間にあるデータおよび機能の少なくとも1つの配布は、トランザクションとして実装することができる。より詳細には、トランザクションは、図1の実施例のように、デバイス105、110、115、120、125のうちの1つの内部においてまたはネットワーク環境の中において、1つの原子的オペレーションとして同期してまたは非同期で実行されるオペレーションのグループである。このネットワーク上で実施されるトランザクション処理リモートファイルオペレーションの実施例について、図2〜図7とともに以下にさらに詳細に説明する。
トランザクション処理リモートファイルオペレーション
図2は、図1におけるシステム100中の(例えば、デバイス105、110、115、120、125から選択される)2つのデバイスのコンポーネントを示している。これらは、トランザクション処理リモートファイルオペレーションのためのクライアント202およびサーバ204として動作する。この実施形態においては、クライアント202もサーバ204も共に、あるバージョンのMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムを使用している。他の実施形態においては、異なるオペレーティングシステムを使用することができる。
この実施形態においては、クライアント202は、アプリケーション212、I/O(input/output入出力)マネージャ214、ファイルシステム(FS)216、リダイレクタセレクタ(redirector selector)218、トランザクションマネージャ(TM)222、およびリダイレクタ(RDR)220を含んでいる。この実施形態において、サーバ204は、サーバコンポーネント(SRV)234、I/Oマネージャ214A、FS216AおよびTM222Aを含んでいる。この実施形態において、クライアント202およびサーバ204は、ネットワーク100(図1)を介して互いに情報をやりとりすることができる。一部の実施形態においては、これらのコンポーネントは、ソフトウェアにより実装される。
この「Windows(登録商標)」の実施形態において、I/Oマネージャ214および214A、ならびにFS216および216Aは、NTFS(NT file systemNTファイルシステム)によって実装され、リダイレクタセレクタ218は、MUP(multiple UNC provider複数UNCプロバイダ)によって実装され、ここでUNCは、Uniform Naming Convention(汎用名前付け規則)の頭字語である。したがって、リダイレクタセレクタ218は、本明細書中においてMUP218とも呼ばれる。さらに、Microsoft(登録商標)Windows(登録商標)オペレーティングシステムのRDRおよびSRVは、(追加機能とともに)それぞれRDR220およびSRV234を実装する。このMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムのRDRおよびSRVに対する追加機能の一例については、以下で説明する。さらにまた、この実施形態において、TMM222およびTM222Aは、この実施形態の例においてはカーネルレベルトランザクションマネージャとして実装され、以下にさらに詳細に説明する。他の実施例においては、異なるI/Oマネージャ、ファイルシステム、リダイレクタセレクタ、TM、および/またはRDRを使用することもできる。
図3は、クライアント202とサーバ204の間のトランザクション処理リモートファイルオペレーション(図2)についての実施例の処理フローを示している。図2および図3を参照すると、トランザクション処理リモートファイルオペレーションは、一実施形態によれば、以下のように実施される。
ブロック302において、RDR220は、サーバ204中に存在するファイルに対するトランザクション処理ファイルオペレーションを求める要求を受信する。典型的なファイルオペレーションは、新しいファイルを作成する工程、ファイルを読み取る工程、ファイルを書き込む工程、ファイルをコピーする工程、ファイルの名前を変更する工程などを含んでいる。この実施形態においては、トランザクション処理ファイルオペレーションを求める要求は、アプリケーション212によって生成さる。このアプリケーションは、図2に示すようにユーザレベルのアプリケーションである。この要求は、トランザクションコンテキストについてのフィールドを含む構造を使用する。この要求は、I/Oマネージャ214によって受信され、このI/Oマネージャは、この要求がローカルファイルに対するものか、それともリモートファイルに対するものかを判定する。この実施形態においては、I/Oマネージャ214は、このMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムの標準コンポーネントである。例えば、アプリケーション212は、(\\server\share\subdirectory\filenameの形式の)このUNCネームを用いて、I/Oマネージャ214への呼び出しを介して、この要求を行うことができる。次いでI/Oマネージャ214は、この要求をMUP218に渡す。トランザクションについては複数のハンドルが存在し、所与のファイルについては複数のトランザクションが存在することができる。他方、この要求がこのクライアント上のファイルを求めるものである場合には、I/Oマネージャ214は、標準的な方法によって、この要求をNTFS216に渡すはずである。
次いでMUP218は、この要求を実施するために必要とされるリダイレクタの位置を突き止める。このケースにおいては、このリダイレクタは、RDR220である。この実施形態において、MUP218は、このMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムの標準コンポーネントである。この実施形態においては、RDR220は、このMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムRDRの1つのバージョンであり、追加部分を用いることにより、このRDRは、TM222と対話してトランザクションを実施することができる。この追加部分は例えば、要求からトランザクション処理ファイルオペレーションについてのトランザクションコンテキストを検索し、トランザクション処理ファイルオペレーションについてのFCBを割り当て、ネットワーク上でトランザクションをリモートデバイスに送信し、(ファイル識別子およびバージョン識別子を含めて)これらのトランザクション処理ファイルオペレーションについての応答を受信し、TM222の指示の下にトランザクションオペレーションを実施し、RDR220がトランザクションの状態に関して通知され続けることができるようにするためのTM222をリソースマネージャとしてエンリストする(enlist)機能を含んでいる。一部の実施形態においては、RDR220は、同時係属の同一出願人による「Transactional File System」という名称の2000年3月30日に出願の、米国特許出願第09/539,233号明細書および米国出願番号[整理番号第MS1−1781US]に説明されているように実装される。リソースマネージャとしてのエンリスト(enlisting)については以下で説明する。RDR220は、このトランザクションをバッファリングするためのリソース、キャッシュマップ、FCB(file control blockファイル制御ブロック)、FOBX(file object extensionファイルオブジェクト拡張部分)、およびこのトランザクションおよび要求を処理するために必要な他の構造を含んでいる。
ブロック304において、RDR220は、TM222からこのトランザクションを検索し、このトランザクションをクライアント204に送信するためにマーシャリングする。一実施形態においては、RDR220は、TM222によって表示される(その実施形態について以下で説明している)APIを呼び出すことによってこのトランザクションを検索し、トランザクションをサポートするように拡張されている1つのバージョンのSMBプロトコルを使用して送信するためにこのトランザクション情報(例えば、マーシャリングブロブ)をフォーマットすることによってこのトランザクションをマーシャリングする。例示の一実施形態のSMB拡張部分については、表1〜表3とともに以下で要約している。ブロック306において、RDR220は、矢印236で示すようにこのトランザクションおよびこの要求をサーバ204に対して送信する。ブロック308において、RDR220は、サーバ204からこのファイルオペレーションの結果を受信する。例えば、サーバ204は、前述のファイルおよびバージョン識別子を含むこの要求に対する応答を送信する。この実施形態においては、SRV234は、このMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムSRVの1つのバージョンである。追加機能部分を用いることにより、このSRVは、トランザクション処理リモートファイルオペレーション中にファイルおよびバージョン識別子をクライアントに対して渡すことを含め、ネットワーク上でクライアントと対話してSMBに対する拡張部分を使用してトランザクションを実施することができる。
Figure 2007509409
Figure 2007509409
Figure 2007509409
Figure 2007509409
Figure 2007509409
Figure 2007509409
Figure 2007509409
Figure 2007509409
図3Aは、一実施形態におけるブロック302(図3)をさらに詳細に示している。ブロック312において、RDR220は、この要求されたファイルオペレーションについてのトランザクションコンテキストを検索する。トランザクション処理リモートファイルをオープンする際に、RDR220は、トランザクションがこの要求にすでに関連づけられているかどうかを判定する。例えば、一実施形態において、トランザクションはそれをスレッド(thread)にアタッチすることによって要求に関連付けられるが、他の実施形態においては、異なる方法を使用してトランザクションを要求に関連づけることができる。一実施形態においては、RDR220は、この要求がそれに関連づけられたトランザクションハンドルを有するかどうかを調べるために検査することによってこのオペレーションを実施する。関連づけられたトランザクションハンドルを有する場合には、この要求は、その既存のトランザクションに加え(join)られる。有していない場合には、RDR220は、非トランザクション処理要求に対する標準的な方法でこの要求を処理する。
次いで、RDR220は、この要求にFCBを割り当てる。前述のように、複数の要求を有する複数のトランザクションが、所与のファイルをオープンすることもある。したがって、ブロック302(図3)の一実施形態においては、RDR220が既存のFCBをこの要求に対しても使用できるかどうかについて判定するブロック314が、実行される。この実施形態において、RDR220は、検査して、この要求のファイル(すなわち、パスネーム)およびこの要求を作るスレッドに関連するこのトランザクションコンテキストが、既存のFCBのこれらとマッチングするかどうかを調べる。例えば、第2の要求の処理中に、この同じファイルの2つの書込みオペレーションが、同じトランザクション中で要求されたとする場合には、この第1の要求のために既にFCBが存在しているはずである。両方のオペレーションが共に書込みオペレーションであるので、この同じFCBを両者に対して使用することができる。
ブロック314において、RDR220が、FCBが同じトランザクションコンテキストならびに同じファイル(すなわち、パスネーム)および同じバージョンと共に存在すると判定する場合には、ブロック316において、既存のFCBがこの要求に対して使用される。一部の実施形態において、RDR220は、最新バージョンを有するFCBを使用することになる。例えば、ファイルの読取りオペレーションがこの同じファイルのコミットされていない書込みオペレーションに続く場合、RDR220は、この書込みオペレーションが現在使用しているファイルのこのバージョンを使用することになる。このアプローチによって、キャッシングのさらに効率的な使用が可能になる。
しかし、ブロック314において、この要求に対する既存のFCBを使用することができない場合には、ブロック318においてRDRは、この要求に対して新しいFCBを作成する。代替的な実施形態においては、新しいFCBが、要求ごとに作成される。
図4は、この同じファイルに対するコミットされない複数のトランザクション処理要求の一例を示している。図4に示すように、オペレーション401は、ファイルの読取りオペレーションを求める要求に対応する。すなわち、このファイルオペレーションは、「読取りのためにオープンする」オペレーションである。オペレーション401は、ハンドルH1と、このハンドルに関連付けられたトランザクションT1を有する。RDR220(図2)が要求するこのファイルのバージョンは、バージョンAとして示される。これがこのファイルに対しての最初のコミットされないトランザクションであると想定すると、バージョンAは、サーバ204(図2)から読み出され、クライアント202(図2)中にキャッシュされる。
後の時刻において、オペレーション402がこの同じファイルに対して要求される。この例においては、オペレーション402も読取りオペレーションであり、ハンドルH2およびトランザクションT2を有する。このトランザクションは、オペレーション401のトランザクションとは異なるので、RDR220は、この場合にもサーバ204からこのファイルのバージョンAが読み出される。
この例においては、次いでオペレーション403が、オペレーション402と同じトランザクションにおいてこの同じファイルに対して要求される。したがって、オペレーション403はハンドルH3を有し、トランザクションT2に結合(join)される。しかし、この例においては、オペレーション403は書込みオペレーションであり、したがってRDR220は、このファイルのバージョンBをローカルに記憶している(例えば、キャッシュしている)。バージョンBは、時として「ダーティバージョン」と呼ばれることがある。
次いでオペレーション404が、オペレーション402および403と同じトランザクションにおいて、この同じファイルに対して要求される。したがって、オペレーション404はハンドルH4を有し、これもまたトランザクションT2に結合される。この例においては、オペレーション404は読取りオペレーションである。この実施形態においては、ブロック314(図3A)の結果により、RDR220は、オペレーション404に対するバージョンBを記憶しており、おそらくはキャッシュしていることになる。
次いで、オペレーション405が、異なるトランザクションにおいてこの同じファイルに対して要求される。したがって、オペレーション405はハンドルH5を有し、新しいトランザクションT3に関連付けられる。このトランザクションは、以前のオペレーションのトランザクションとは異なるので、一実施形態において、RDR220は、この場合にもこのファイルのバージョンAをサーバ204から読み出す。他の実施形態においては、RDR220はサーバ204(図2)を調べなくても、依然としてバージョンAが現行バージョンであることを認識しており、この「ローカル」バージョンAを使用する。例えば、この代替的な実施形態では、便宜的ロックを使用してサーバ204中に存在するこのファイルのどのような新しいバージョンについても知ることができるようになる。すなわち、RDR220は、サーバ204上のファイルに対する書込みを妨げることのない便宜的ロックを、このファイルに関連付けることができるが、サーバ204は、このロックが解除されたことをRDR220に信号で伝えるようにする。このようなケースにおいては、次いでRDR220は、バージョンAはもはや最新のバージョンではないことを知るはずである。さらに他の実施形態においては、RDR220は、サーバ204に照会してこのファイルの最新バージョンを決定し、次いでこの最新のバージョンに関連付けられた既存のFCBを再使用することができる。
次いで、オペレーション406において、トランザクションT2がコミット(commit)される。これは、サーバ204上でこのバージョンを変更する効果を有する。サーバ204上に記憶されるこの新しいバージョンは、バージョンCとして示される。前述したように、RDR220は、すべてのリモートトランザクション中にリソースマネージャとしてエンリストするので、RDR220は、サーバ204がこのファイルの新しいバージョンを有することを学習する。
次いで、オペレーション401と同じトランザクションにおいてこの同じファイルに対して、オペレーション407が要求される。したがって、オペレーション407はハンドルH6を有し、トランザクションT1に結合される。しかし、RDR220はサーバ204上のこのファイルのバージョンCを知っているので、RDR220は、このオペレーションに対するバージョンCを記憶しており、おそらくキャッシュしている。一部の実施形態においては、RDR220は、サーバ204からバージョンCを読み出す。
同様に、オペレーション405と同じトランザクションによってこの同じファイルに対して、オペレーション408が要求されるとき、オペレーション408はハンドルH7を有し、トランザクションT3に結合される。この場合にも、RDR220がサーバ204上のこのファイルのバージョンCについて知っているので、RDR220は、このオペレーションに対するバージョンCを記憶しており、おそらくキャッシュしている。
図5は、一実施形態に従って、クライアント202(図2)からのキャッシュされたデータがどのようにしてサーバ204(図2)にフラッシュされるの(すなわち、永続的に記憶される)かを示している。図2および図5を参照すると、クライアント202は、一実施形態によれば、以下で説明するようにサーバ204にデータをフラッシュする。
ブロック502において、このデータを生成するアプリケーションは、呼出しを行うか、あるいはこのトランザクションをコミットする要求を発行する。この呼出しまたは要求は、TM222に渡される。それに応答して、TM222は、(この実施例のトランザクションマネージャに関して以下で説明する)プリプリペア通知(Pre−prepare Notification)を生成する。
この実施形態において、RDR220は、ブロック504に示すようにTM222からこのプリプリペア通知を受信する。それに応答してRDR220は、このネットワークを介してこのデータをSRV234に対してフラッシュする。SRV234は、次にこのデータをNTFS216Aに渡す。これらのオペレーションは、ブロック506によって示される。一部の実施形態においては、サーバ204のTM222Aは、いつこのプリプリペアオペレーションが完了するかについてRDR220に信号で伝える。ブロック504および506は、(実施例のトランザクションマネージャに関して以下で説明する)プリペア(Prepare)オペレーションが実施される以前に、サーバ204に書き込むべきクライアント202からのデータが、サーバ204上に存在するようにするのを助ける。
ブロック508において、RDR220は、(実施例のトランザクションマネージャに関して以下で説明する)プリペア通知をTM222から受信する。一実施形態においては、RDR220は、このプリペア通知に応答してプリペア通知メッセージをサーバ204に送信し、このプリペア通知は、TM222Aに渡される。次にTM222Aは、このプリペア通知をNTFS216Aに渡す。これらのオペレーションは、ブロック510および512によって示される。このプリペア通知は、クライアント202およびサーバ204が、このデータをコミットし、またはロールバックすることができるような方法で、このデータを記憶するようにする。一部の実施形態においては、サーバ204のTM222Aは、RDR220にいつこのプリペアオペレーションが完了するかを信号で伝える。次いで、このデータは、ブロック514で示すように、標準の2相コミットオペレーション(例えば、このトランザクションをコミットし、または、中止するオペレーション)を使用して処理される。
以上では、トランザクションマネージメントは、別々のTMコンポーネント(すなわち、TM222およびTM222A)を使用して実施されるものとして説明しているが、他の実施形態においては、このトランザクションマネージメントインフラストラクチャは、このファイルシステムインフラストラクチャに一体化することができる。さらに、このような一体化された実施形態においては、これらのトランザクションメッセージ(例えば、以下で説明するようにプリプリペア(PrePrepare)、プリペア(Prepare)、コミット(Commit)、アボート(Abort)など)は、この伝送チャネル上をファイルメッセージと共に流れる。
実施例のトランザクションマネージャ
図6は、一実施形態による、トランザクションを実施する際に使用されるコンポーネントを示している。特定のトランザクションを構成するオペレーションのグループは、少なくとも当業者には「原子性(atomicity)」、「一貫性(consistency)」、「隔離性(isolation)」、および「永続性(durability)」を含む頭字語「ACID」として知られている特性を、全体として有している。より詳細には、トランザクションの各オペレーションからもたらされるデータの更新は、すべて不変であるか、あるいはどれも不変でなく(原子性)、トランザクションは、基礎をなすデータを一貫した状態にし(一貫性)、トランザクション更新の効果は、全体のトランザクションが不変となるまでは他の同時に実行されるオペレーションから見えず(隔離性)、またトランザクションに対する結果が決定された後は、この結果は決して変化しないことが保証される(永続性)。
図6のカーネルレベルのトランザクションマネージメントの実施例は、複数の装置に関与する分散トランザクションの実施例を対象としており、トランザクションに期待される「ACID」特性を保持している。さらに、図6の実施例は、カーネルオブジェクトを参照しているが、この実施例は、決してカーネルオブジェクトによって実装されるトランザクションだけに限定されるものではない。より詳細には、本明細書中で説明するトランザクションは、カーネルオブジェクト以外のオブジェクトによっても実装することができ、また異なるタイプのトランザクションマネージャによっても実装することができる。
図6において、クライアントアプリケーション600に対応するトランザクションは、少なくとも第1のデバイス上のトランザクションマネージャ605、ならびに第2のデバイス上のクライアントアプリケーション600Bおよびトランザクションマネージャ635を利用している。クライアントアプリケーション600Bは、クライアントアプリケーション600に関連付けられている。互いに情報をやりとりするトランザクションマネージャ605および635は、全体のトランザクションおよびリソースについての状態情報を保持し、さらにクライアントアプリケーションと関連するRM(resource managerリソースマネージャ)の間で相互作用またはプロトコルを調整することができるカーネルオブジェクトの集合体とすることができる。
図6の実施例におけるRM625およびRM630を含めてリソースマネージャは、データを永続的状態に記憶することができる少なくとも1つの基礎をなすリソースの状態を保持する。このようなリソースの非排他的な実施例は、データベースおよびメッセージキュー(message queue)を含んでいる。図6の実施形態の例の第1のデバイスにおいて、RM625はリソース627に対応し、RM630はリソース632に対応し、第2のデバイスにおいて、RM655はリソース657に対応する。
図6に示すように、第1のデバイス上のトランザクションマネージャ605は、以下のカーネルオブジェクト:TX(transaction objectトランザクションオブジェクト)610、RMO(resource manager objectリソースマネージャオブジェクト)615、およびEN(enlistmet objectエンリストメントオブジェクト)620を含んでおり、第2のデバイス上のトランザクションマネージャ635は、以下のカーネルオブジェクト:TX640、RMO645、およびEN650を含んでいる。TXは特定のトランザクションを表し、このトランザクションに参加するプロセスによってオープンにすることができる。
RMOは、特定のトランザクションに参加するリソースを表す。トランザクションへのRMOによる参加は、2相コミットメッセージを受信することを含んでいる。さらに、RMOは永続的であり、その結果、この対応するトランザクションマネージャは、どのトランザクションの結果が対応するRMに伝送されるかを知っている。代わりに、RMOが過渡的なこともあり、したがって、失敗を超えて永続的なRMOを管理することなく、クライアントアプリケーションがトランザクション通知のストリームに加入することができるようになる。
ENは、トランザクションとリソースマネージャとの間の関係を表す。リソースマネージャは、EN上にエンリストメントを作成することによってENがトランザクションに参加することになることを示す。RMOが、特定のトランザクションに関して(PrepareやCommitなどの)オペレーションを実施するように要求されているときには、RMOは、ENを使用して参加を示す。リソースマネージャは、特定のトランザクションに関して複数のENを有することもできる。
以下のように、カーネル環境に対して、トランザクションが正常にすべての適切なファイルをアップデートするようにするために実装される2相コミットプロトコルが、図6および図7の実施例を参照しながら説明される。特に、クライアントアプリケーション600が、第1のデバイス上のトランザクションマネージャ605に対応するカーネルオブジェクトをオープンし、SRV234(図2)が、第2のデバイス上のトランザクションマネージャ635に対応するカーネルオブジェクトをオープンした後に、「プリペア(prepare)」フェーズ700が開始され、705において、このトランザクション中の各RMには、対応するトランザクションマネージャからの「プリペア」命令が送信される。このように警告を受けて、710において、RMはリソースデータを永続的状態にすることによってプリペアを行い、その結果、各リソース中のこのデータは、「コミットされ」または「ロールバックされる」ことが可能になる。プリペアが行われると、715において、RMはこの対応するトランザクションマネージャのTXに対して確認メッセージを送信する。
「コミット」フェーズ720は、このトランザクションが解決すると実施され、それによって725においてこのトランザクションマネージャのTXは、各関連付けられたRMに対して「コミットされ」または「アボート/ロールバックされた」トランザクション結果を送信する。次いで、RMは、この結果を関連付けられたログに記録し、この基礎となるリソースデータは、このトランザクション結果に従ってコミットされ、あるいはロールバックされる。代替的な実施形態においては、このトランザクションについてのデータが永続的でない揮発性のエンリストメントを可能とすることができ、したがってこのデータは、ログ記録もされず、また復元もされない。
カーネルレベル上のトランザクションマネージメントは、それだけには限定されないが
Microsoft(登録商標)Win32(登録商標)アプリケーションプログラミングインターフェースおよびMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムを含めてシステムアーキテクチャに適用可能なAPI(application program interfaceアプリケーションプログラムインターフェース)を利用することによって実装することができる。本明細書中で説明しているAPIは、ハンドルベースのインターフェースを介して表示され、「ハンドル」は、APIを対象とするオブジェクトを参照する。さらに、非同期式のオペレーションが明示的に要求されない限り、各カーネルオブジェクト上、特にTXおよびRMO上のオペレーションは、同期式である。さらにまた、トランザクションの異なる実施形態に対応するオペレーションは、本明細書中で説明している1つまたは複数の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を破壊し、したがってRMOを非永続的なものにする。
GetResourceManagerInfo:RMOについての情報を検索する。
SetResourceManagerInfo:RMOについての情報を設定する。
CreateEnlistment:RMOをトランザクションに参加させ、関連した通知を検索する。
GetNotificationResourceManager:使用可能なRM通知を照会し戻す。
トランザクションに参加した後、RMOカーネルオブジェクトによってTXカーネルオブジェクト上でオペレーションを実装するために利用されるAPI、およびこのAPIの機能の対応する記述が、以下に提供される(この関連するルーチンのさらに詳細な記述も、以下にさらに提供される)。
・PrePrepareComplete:対応するトランザクションマネージャが要求するときに、RMがプリプリペアを完了していることを示す。
・PrepareComplete:対応するトランザクションマネージャが要求するときに、RMがトランザクションのプリペアを完了していることを示す。
・RollbackComplete:対応するトランザクションマネージャが要求するときに、RMが実行されたトランザクション作業のロールバックを完了していることを示す。
・CommitComplete:対応するトランザクションマネージャが要求するときに、RMがトランザクション作業のコミットを完了していることを示す。
残念ながら、トランザクションマネージメントを実装するために利用されるTX、RMO、およびENに関連するAPIは、様々なセキュリティ攻撃に対して1つまたは複数のカーネルオブジェクトをさらすこともある。例えば、悪意のあるまたは不正なRMが、トランザクション中にそれ自体をエンリストしてファンクション呼出しに決して応答しないことによってサービス拒否攻撃を引き起こし、あるいは、代わりにトランザクションアボートを強制することができる。したがって、図6をまた参照すると、さらなる例示の実施例は、安全なカーネルレベルの分散トランザクションを対象としている。
図6の実施形態の一例はさらに、各カーネルオブジェクトの少なくとも1つに対してACL(access control listアクセスコントロールリスト)を含むことができるセキュリティデスクリプタ(security descriptor)を適用することにより、ぜい弱なカーネルオブジェクトに対するセキュリティソリューションを提供する。
第1のデバイスにおいては、ACL660はTX610に適用され、ACL665はRMO615に適用され、ACL670はEN620に適用される。第2のデバイスにおいては、ACL675はTX640に適用され、ACL680はRMO645に適用され、ACL685はEN650に適用される。
ACLは、特定のユーザまたはユーザグループが特定のオブジェクト上で行使することを許可または拒否される「権利(right)」を定義する。より詳細には、図8の実施例ACL810に示すように、カーネルオブジェクトに適用またはアタッチされるACLは、対応するSID(security identifierセキュリティ識別子)および対応する1組の権利を含む少なくともACE(access control entryアクセス制御エントリ)を含んでいる。図8のACEエントリ1〜12は、それぞれ対応するSID1〜12、および対応するRIGHT1〜12を含んでいる。
SID1〜12は、このACLが適用されるカーネルオブジェクト上でオペレーション、または一連のオペレーションを実装しようと試みることができるユーザまたはユーザグループを識別する。RIGHT1〜12は、このSIDによって識別されるユーザまたはユーザグループがこの各カーネルオブジェクト上で実施することができるオペレーションまたは一連のオペレーションを指定し、さらにこの識別されたユーザまたはユーザグループへのこのようなオペレーションまたは複数のオペレーションのアクセス可能性を指定する。すなわち、RIGHT1〜12は、識別されたユーザまたはユーザグループが、指定されたオペレーションを実施することが許可されること、あるいは、この指定されたユーザまたはユーザグループが、指定されたオペレーションを実施することが禁止されることを示すことができる。
以下は、TXに対して適用されるACLにおいてRIGHT1〜12が指定することができるオペレーションの例のリストであり、このオペレーションの機能の記述が後に続いている。RIGHT1〜12はさらに、この対応するSIDによって識別されるユーザまたはユーザグループに対してTX上でこのオペレーションが許可または拒否されることを指定する。
・TRANSACTION_QUERY_INFORMATION:TXについての情報を獲得する。
・TRANSACTION_SET_INFORMATION:TXについての情報を設定する。
・TRANSACTION_ENLIST:このトランザクション中のTX上にエンリストする。
・TRANSACTION_COMMIT:TXに関連するすべてのデータアップデートを永続的にする。
・TRANSACTION_ROLLBACK:TX上でこのオペレーションをアボート、すなわちロールバックする。
・TRANSACTION_PROPAGATE:TXから別のオブジェクトへとデータを伝送する。
・TRANSACTION_SAVEPOINT:このトランザクションの最新ポイントを保存する。
・TRANSACTION_MARSHAL:このトランザクションに関するデータを別のデバイスへと伝送する。
以下は、RMOに対して適用されるACLにおいてRIGHT1〜12が指定することができるオペレーションの例のリストであり、このオペレーションの機能の記述が後に続いている。RIGHT1〜12はさらに、この対応するSIDによって識別されるユーザまたはユーザグループに対してRMO上でこのオペレーションが許可または拒否されることを指定する。
・RESOURCEMANAGER_QUERY_INFORMATION:RMOについての情報を獲得する。
・RESOURCEMANAGER_SET_INFORMATION:RMOについての情報を設定する。
・RESOURCEMANAGER_RECOVER:トランザクションの失敗の瞬間におけるトランザクションの状態を決定する。
・RESOURCEMANAGER_ENLIST:トランザクションにおいてRMOをエンリストする。
・RESOURCEMANAGER_GET_NOTIFICATION:トランザクションマネージャからのトランザクションの解決に応じて通知を受信する。
・RESOURCEMANAGER_REGISTER_PROTOCOL:このトランザクションにおいてRMOがサポートするプロトコルを登録する。
・RESOURCEMANAGER_COMPLETE_PROPAGATION:トランザクションの解決に従ってリソースを設定する。
以下は、ENに対して適用されるACLにおいてRIGHT1〜12が指定することができるオペレーションの例のリストであり、このオペレーションの機能の記述が後に続いている。RIGHT1〜12はさらに、この対応するSIDによって識別されるユーザまたはユーザグループに対してEN上でこのオペレーションが許可または拒否されることを指定する。
・ENLISTMENT_QUERY_INFORMATION:ENについての情報を獲得する。
・ENLISTMENT_SET_INFORMATION:ENについての情報を設定する。
・ENLISTMENT_RECOVER:トランザクションの失敗の瞬間におけるエンリストメントの状態を決定する。
・ENLISTMENT_REFERENCE:エンリストメントキーを取得し、参照(または逆参照)する。
・ENLISTMENT_SUBORDINATE_RIGHTS:このトランザクションをロールバックし、通知に応答する。
・ENLISTMENT_SUPERIOR_RIGHTS:トランザクション中でプリプリペアオペレーション、プリペアオペレーション、または上位ロールバックオペレーションを開始するなど、上位トランザクションマネージャが実施するはずのオペレーションを実施する。
したがって、各カーネルオブジェクトTX、RMO、およびENはそれぞれそれに適用されるACLを有することができる。このように、APIがこれらのカーネルオブジェクトのそれぞれ1つの上にあるオペレーションを開始しようと試みるときに、このAPIが起源とするユーザまたはユーザグループに対して、このオペレーションが許可または拒否されるかどうかを判定して、このACLに従う必要がある。
より詳細には、オペレーションを実施するためのハンドルがオープンされるとき、このAPIに対応するユーザまたはユーザグループはこのACL中のSIDに対して検査され、許可されたオペレーションのリストが生成され、このAPIによって指定されるこのオペレーションは所与のハンドル上のこのSIDに対して許可されたオペレーションに対して検査される。
カーネルオブジェクトの間のトランザクションマネージメントをセキュリティ保護し、セキュリティパラメータを強要する代替的な実施形態は、このMicrosoft(登録商標)Windows(登録商標)オペレーティングシステム用のセキュリティモデルによるトランザクションに参加することができるカーネルオブジェクトにセキュリティデスクリプタを適用する工程を含んでいる。
上述のように、これらのAPIは、ハンドルベースのインターフェースとして表示され、このインターフェースを利用してこのセキュリティモデルを実装する。以上でリストアップしたTXカーネルオブジェクト上でオペレーションを実装するこれらのAPIのより詳細な記述が、以下に含まれている。これらの記述は、このルーチン、対応する引数、およびリターン値の記述を含んでいる。
PreprepareEnlistment
(IN PHANDLE TransactionHandle;
IN PHANDLE ResourceManagerHandle)。
・このルーチンは、すべての関連するRMに対してプリプリペア要求(Pre−Prepare request)を発行することによってトランザクションが「プリプリペアされる」ことを要求する。プリプリペアは、このトランザクションが、下流のRMがもはや変更を受け入れることができないというプリペア状態(Prepared state)に入る以前に、キャッシュに似た特性を有するRMにそのキャッシュを、可能であれば他のRMに対してフラッシュする機会を許可する。
・このルーチンが呼び出されず、トランザクション参加者がフェーズ0の処理を要求している場合、プリペア(Prepare)が受信されるときに要求されるように、プリプリペア要求が発行される。しかし、PreprepareEnlistmentが存在しない場合には、キャッシュに似たRMを含む一部の構成では、分散シナリオにおいて、不必要なトランザクションロールバックが引き起こされることもある。
・引数:
TransactionHandle:プリプリペアすべきトランザクションを示すハンドルを与える。
ResourceManagerHandle:このトランザクションをプリプリペアしている上位−TM/CRMに対してハンドルを与える。この上位−TM/CRMだけが、このトランザクション上でPrepareEnlistment、SuperiorCommitTransaction、およびSuperiorRollbackTransactionを呼び出すことが可能になる。
・リターン値:
Figure 2007509409
PrepareEnlistment
(IN PHANDLE TransactionHandle、
IN PHANDLE ResourceManagerHandle);
・このルーチンは、すべてのその関連付けられたResourceManagerに対してプリペア要求(Prepare request)を発行することによって、トランザクションが「プリペアされる」ことを要求する。この要求は、2相コミットプロトコルを開始する。
・PrepareEnlistmentを発行するトランザクション参加者は、トランザクションオブジェクトをシステムまたはアプリケーションがクラッシュしても生き残ることになる永続的状態にする。このような参加者は、どのようなタイプの失敗の後にもこのトランザクション上でリカバリ(recovery)を実施して、結果を送付する。この要件を満たすのに失敗すると、リソースのリーク、ならびに矛盾したトランザクションの結果がもたらされることもある。
・引数:
TransactionHandle:プリペアすべきトランザクションについてのハンドルを与える。
ResourceManagerHandle:このトランザクションをプリペアしているTMに対して、ハンドルを与える。このトランザクションが(PreprepareEnlistmentに対するコールを介して)プリプリペアされている場合には、ResourceManagerHandleは、PreprepareEnlistmentに対する呼出し中で使用された上位−TM/CRMとマッチングする。さらに、このAPIをコールする上位−TM/CRMだけが、このトランザクション上でSuperiorCommittransactionおよびSuperiorRollbackTransactionを呼び出すことが許可されることになる。
・リターン値:
Figure 2007509409
CreateTransaction
(OUT PHANDLE TransactionHandle、
IN ULONG DesiredAccess
OPTIONAL;
IN POBJECT_ATTRIBUTES ObjectAttributes
OPTIONAL;
IN ULONG CreateOptions
OPTIONAL;
IN PHANDLE ResourceManagerHandle
OPTIONAL;
IN NOTIFICATION_MASK NotificationMask
OPTIONAL;
IN LPVOID TransactionKey
OPTIONAL)。
・このルーチンは、新しいトランザクションオブジェクトを作成し、この新しいオブジェクトにハンドルを戻す。
・代わりに(ResourceManagerHandleパラメータが指定される場合)、このルーチンは、それが正常に作成された後に、このトランザクション上で「ジョイン(Join)」オペレーションを実施する。
クライアントは、CloseHandleAPIを使用してこのトランザクションハンドルをクローズする。この最後のトランザクションハンドルが、いずれかがこのトランザクション上で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 「何も想定しない(presumed nothing)」トランザクションを作成する。
ResourceManagerHandle:指定されたトランザクションについての通知を受信するResourceManagerにハンドルを与える。
NotificationMask:このResourceManagerがこのトランザクションに関して受信したい通知を指定する。
TransactionKey:このRMがこのトランザクションについての任意の通知とともに受信をしたい不明瞭なポインタ値を指定する。このRMは、このポインタ値を使用して通知をこのRMのアドレス空間中のあるオブジェクトに関連づけることができ、それによって通知が行われるたびにルックアップを実行する必要をなくすることができる。
・リターン値:
Figure 2007509409
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);
・このルーチンは、既存のトランザクションオブジェクトを調べ、ハンドルをこのトランザクションに戻す。この呼出し元は、ObjectAttributesのObjectNameフィールド中においてGUIDのストリング表現を指定する。
・代わりに(このResourceManagerHandleパラメータが指定される場合)、このルーチンはまた、それがオープンされた後にこのトランザクション上で「ジョイン」オペレーションを実施する。
・クライアントは、CloseHandleAPIを使用してこのトランザクションハンドルをクローズする。この最後のトランザクションハンドルが、どれかがこのトランザクション上でCommitTransactionをコールすることなくクローズする場合には、このトランザクションは、暗黙的にロールバックされたトランザクションである。
・引数:
TransactionHandle:このオープンオペレーションが成功する場合に、このトランザクションに対するハンドルを受信することになるロケーションにポインタを与える。
DesiredAccess:この所望のアクセスレベルを指定するマスクを与える。
ObjectAttributes:オプションのオブジェクト属性構造にポインタを与える。
ResourceManagerHandle:この指定されたトランザクションについての通知を受信するResourceManagerにハンドルを与える。
NotificationMask:このResourceManagerがこのトランザクションに関して受信することができる通知を指定する。
TransactionKey:このRMがこのトランザクションについての任意の通知とともに受信したい不明瞭なポインタ値をオプション的に指定する。このRMは、このポインタ値を使用して通知をこのRMのアドレス空間中のあるオブジェクトに関連づけることができ、それによって通知が行われるたびにルックアップを実行する必要をなくすることができる。
・リターン値:
Figure 2007509409
CommitTransaction
(IN PHANDLE TransactionHandle
IN ULONG CommitOptions Optional);
・このルーチンは、TransactionHandleに関連するこのトランザクションがコミットされることを要求する。オープンまたは作成されている任意のトランザクションハンドルは、Transaction_Commit Desired Accessを用いてコミットすることができる。トランザクションの作成者だけがそれをコミットすることが可能であることを提示する制約は、存在していないからである。
・問題のトランザクションが、以前にPrepareEnlistment要求を発行していない場合に、2相コミットプロトコルは、すべてのエンリストされたRM上で開始することができる。この呼出しは、このクライアントによって発行されている1相コミット要求と考えることができる。
・このトランザクションが以前にPrepareEnlistmentを介してプリペアされている場合には、このルーティング(routing)は、呼び出されない。PrepareEnlistmentを呼び出したRMだけが、このルーチンSuperiorCommitTransactionを使用して、このトランザクション状態を解決することができる。
・引数:
TransactionHandle:コミットすべきトランザクションを示すハンドルを与える。
CommitOptions:COMMIT_RETAININGトランザクションがコミットされることになる。
・リターン値:
Figure 2007509409
RollbackTransaction
(IN PHANDLE TransactionHandle、
IN SAVEPOINT SavePoint Optional、
IN ROLLBACK_REASON RollbackReason Optional);
・このルーチンは、TransactionHandleに関連するこのトランザクションをロールバックすることを要求する。このオプションのSavePointが指定され、有効なセーブポイントである場合、このロールバックは、部分的なロールバックでもよい。NULLのSavePoint引数は、このトランザクションが完全にロールバックまたはアボートされるべきことを示す。オプションのRollbackReason構造を与えることができる。これは、トランザクションオブジェクト中に保持されることになり、GetInformationTransactionに対する呼出しを介して関心のあるトランザクション参加者は検索することができる。
・引数:
TransactionHandle:ロールバックすべきトランザクションを示すハンドルを与える。
SavePoint:どこまでトランザクションの状態をロールバックすべきかを示すSavePointネームを与える。
RollbackReason:ロールバックリーズン(rollback reason)を与える。
・リターン値:
Figure 2007509409
SavePointTransaction
(IN PHANDLE TransactionHandle、
IN ULONG SavePointFlags Optional、
OUT LPSAVEPOINT SavePoint);
・このルーチンは、「セーブポイント」がTransactionHandleに関連付けられたトランザクションについて生成されることを要求する。このセーブポイントは、後続のロールバック要求に対するターゲットとして使用される。
・引数:
TransactionHandle:セーブポイントを確立すべき対象のトランザクションを示すハンドルを与える。
SavePointFlags:このセーブポイントの生成に影響を及ぼす1組のフラグをオプション的に与える。
SavePoint:セーブポイント識別子が記憶されるロケーションにポインタを与える。
・リターン値:
Figure 2007509409
QueryInformationTransaction
(IN HANDLE TransactionHandle、
IN TRANSACTION_INFORMATION_CLASS
TransactionInformationClass、
OUT PVOID
TransactionInformation、
IN ULONG
TransactionInformationLength、
OUT PULONG ReturnLength Optional);
・このルーチンは、TransactionHandleによって表されるトランザクションオブジェクトについての要求された情報を戻す。
・引数:
TransactionHandle:情報が要求されているトランザクションを示すハンドルを与える。
TransactionInformationClass:このトランザクションオブジェクトについてのどのクラスの情報が要求されているかを示す。
TransactionInformation:要求されているこのトランザクション情報が記憶されるバッファに対してポインタを与える。
TransactionInformationLength:TransactionInformationによってポイントされるバッファの長さを示す。
ReturnLength:このTransactionInformationバッファに書き込まれる情報の長さを受信することになるロケーションにポインタを与える。
・リターン値:
Figure 2007509409
SetInformationTransaction
(IN HANDLE TransactionHandle、
IN TRANSACTION_INFORMATION_CLASS
TransactionInformationClass、 IN PVOID
TransactionInformation、
IN ULONG
TransactionInformationLength);
・このルーチンはTransactionHandleによって表されるこのトランザクションオブジェクトについてこの要求された情報を設定する。
・引数:
TransactionHandle:どの情報が修正されることになるかをこのトランザクションに示すハンドルを与える。
TransactionInformationClass:このトランザクションオブジェクトについてのどのクラスの情報が要求されているかを示す。
TransactionInformation:要求されるこのトランザクション情報が記憶されるバッファにポインタを与える。
TransactionInformationLength:TransactionInformationによってポイントされるバッファの長さを示す。
ReturnLength:このTransactionInformationバッファに書き込まれる情報の長さを受信することになるロケーションにポインタを与える。
・リターン値:
Figure 2007509409
以下は、以上でリストアップした、RMOカーネルオブジェクト上でオペレーションを実装するAPIのより詳細な記述を含んでいる。これらの記述は、このルーチン、対応する引数、およびリターン値の記述を含んでいる。
CreateResourceMnager
(OUT PHANDLE ResourceManagerHandle、
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オブジェクトの過渡的なバージョンは、このオプションRESOURCEMANAGER_NO_RECOVERYを指定することによって作成することができる。過渡的なRMは、リカバリを実施するように義務づけられておらず、また許可されてもいない。このリカバリ不可能なRMオプションにより、この十分複雑なログ記録をとるプリペアを実装する必要なしに、またリカバリを実施することもなしに、アプリケーションまたはRMはトランザクションの進行(例えば、PREPREPARE、PREPARE、COMMIT)についての通知を受信できるようになる。
・引数:
ResourceManagerHandle:この新しいResourceManagerに対するハンドルを受信することになるロケーションにポインタを与える。
DesiredAccess:所望のアクセスレベルを指定するマスクを与える。有効なアクセスマスクの選択肢を以下に示す。:
SYNCHRONIZE:ハンドル上でオペレーションを同期させる。
RESOURCE MANAGER_DESTROY:このリソースマネージャを破壊する。
RESOURCE MANAGER_READ_ATTRIBUTES:リソースマネージャに関連する属性を読み取る。
RESOURCE MANAGER_WRITE_ATTRIBUTES:リソースマネージャに関連する属性を書き込む。
ObjectAttributes:この新しいRMオブジェクトについての属性を指定する。この属性は、RMネームを含んでいる。
CreateOptions:この作成されたオブジェクトについてのオプションを指定する。
RESOUCEMANAGER_NO_RECOVERY:ResourceManagerオブジェクトは、非永続的であり、リカバリを実施しない。
RESOUCEMANAGER_COMMUNICATION:ResourceManagerは、他のコンピュータに対してどのように通信を行うかを知っている。ResourceManagerを使用してトランザクションをマーシャリングまたはアンマーシャリングする(unmarshall)ことができる。
RESOURCEMANAGER_CLUSTER_RECOVERY:ResourceManagerは、失敗している可能性のあるファイルをログ記録した結果をどのようにして読み取り、このクラスタ中の他のノードに送付するべきかを知っている。ResourceManagerを使用してクラスタ中のトランザクションをリカバリすることができる。
NotificationRoutine:通知がこのResourceManagerにとって使用可能であるときに呼び出すべき通知ルーチンを指定する。
・リターン値:
Figure 2007509409
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_DETAILED_RECOVERY_NOTIFICATIONS:このリソースマネージャは、通常のリカバリ通知の代わりに、(通信エンドポイントについての追加の情報を伴う)詳細なリカバリ通知を受信する。
NotificationRoutine:通知が、このResourceManagerにとって使用可能であるときに、呼び出されることになる通知ルーチンを指定する。
・リターン値:
Figure 2007509409
DestroyResourceManager
(IN PHANDLE ResourceManagerHandle);
・このルーチンは、ResourceManagerオブジェクトを破壊し、それがもはや永続的でないようにする。
・引数:
ResourceManagerHandle:破壊すべきResourceManagerオブジェクトを指示するハンドルを与える。
・リターン値:
Figure 2007509409
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バッファに書き込まれる情報の長さを受信するロケーションにポインタを与える。
・リターン値:
Figure 2007509409
SetInformationResourceManager
(IN HANDLE ResourceManagerHandle、
IN RESOURCEMANAGER_INFORMATION_CLASS
ResourceManagerInformationClass、
IN PVOID ResourceManagerInformation、
IN ULONG ResourceManagerInformationLength);
・このルーチンはResourceManagerHandleによって表されるRMOについてのこの要求された情報を設定する。
・引数:
ResourceManagerHandle:情報が修正されているこのResourceManagerを示すハンドルを与える。
ResourceManagerInformationClass:このResourceManagerオブジェクトについてのどのクラスの情報が要求されているかを示す。
ResourceManagerInformation:要求されるこのResourceManager情報が記憶されるバッファにポインタを与える。
ResourceManagerInformationLength:ResourceManagerInformationによってポイントされるバッファの長さを示す。
・リターン値:
Figure 2007509409
CreateEnlistment
(IN PHANDLE ResourceManagerHandle、
IN PHANDLE TransactionHandle、
IN NOTIFICATION_MASK NotificationMask、
IN LPVOID TransactionKey Optional);
・このルーチンは、RMOを特定のトランザクションに結合(joint)させ、それに関連した通知を受信する。
・このCreateEnlistment呼出しは、べき等(idempotent)であり、RMはこのルーチンを複数回呼び出して、そのNotificationMaskまたはTransactionKeyを変更することができる。CreateEnlistmentに対する後続の呼出しは、このトランザクション上で新しいエンリストメントを作成せずに通知マスクおよびトランザクションキーを置換する。
・NotificationMaskを使用して通知が複数回受信されることを要求することができる。例えば、PREPREPARE通知を受信するRMは、JoinTransactionを呼び出し、PREPREPAREフラグを指定することによって別の通知を要求することができる。したがって、RMは、複数のPREPREPARE要求を受信することができる。このような要求は拒絶されることもあり、このトランザクションが、この要求された通知が受信されているはずのポイントを以前に進んでいる場合には、これは望ましいこともある。例えば、あるRMが既にPAREに通知されているときに、PREPREPAREを要求することは認められない。
・引数:
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:PrePrepareに対する通知。
TRANSACTION_NOTIFY_PREPARE:PREPAREに対する通知。
TRANSACTION_NOTIFY_COMMIT:COMMITに対する通知。
TRANSACTION_NOTIFY_ROLLBACK:ROLLBACKに対する通知。
TRANSACTION_NOTIFY_PREPREPARE_COMPLETE:PREPREPAREが完了しているという通知。
TRANSACTION_NOTIFY_PREPARE_COMPLETE:PREPAREが完了しているという通知。
TRANSACTION_NOTIFY_COMMIT_COMPLETE:COMMITが完了しているという通知。
TRANSACTION_NOTIFY_ROLLBACK_COMPLETE:ROLLBACKが完了しているという通知。
TRANSACTION_NOTIFY_SAVEPOINT_COMPLETE:SAVEPOINTが完了しているという通知。
TransactionKey:RMがこのトランザクションについての任意の通知とともに受信したいと思う不明瞭なポインタ値を指定する。このRMは、このポインタ値を使用して通知をこのRMアドレス空間中のあるオブジェクトに関連づけ、それによって通知が行われるたびにルックアップを実施する必要をなくすることができる。
・リターン値:
Figure 2007509409
GetNotificationResourceManager
(IN PHANDLE ResourceManagerHandle、
IN PTRANSACTION_NOTIFICATION TransactionNotification、
IN PLARGE_INTEGER Timeout Optional);
・どれかが使用可能な場合、このルーチンは、RM通知を照会し、戻す。
・引数:
ResourceManagerHandle:通知を戻す対象のResourceManagerを示すハンドルを与える。
TransactionNotification:この第1の使用可能な通知で満たすべきTRANSACTION_NOTIFICATION構造にポインタを与える。
Timeout:使用可能になる通知を待ちながら、それ以降、呼出し側はブロックしたいと考える時刻を与える。このタイムアウトが満了するときに何も使用可能でない場合には、この呼出し側は、STATUS_TIMEOUTと共に戻る。
・リターン値:
Figure 2007509409
以上でリストアップした、トランザクションに参加した後にRMOカーネルオブジェクトによってTXカーネル上でオペレーションを実装するこれらのAPIのより詳細な記述が、以下に含まれている。この記述は、このルーチン、対応する引数、およびリターン値を含んでいる。
PrePrepareComplete
(IN PHANDLE EnlistmentHandle);
・このルーチンは、このKTMが要求するときに、RMがトランザクションのプリプリペア処理(別名「フェーズ0」)を完了していることを示す。
・引数:
TransactionHandle:このプリプリペアオペレーションが完了しているトランザクションを示すハンドルを与える。
・リターン値:
Figure 2007509409
PrepareComplete
(IN PHANDLE EnlistmentHandle);
・このルーチンは、KTMが要求するときに、このRMがトランザクションのプリペアを完了していることを示す。
・引数:
TransactionHandle:このプリペアオペレーションが完了しているトランザクションを示すハンドルを与える。
・リターン値:
Figure 2007509409
RollbackComplete
(IN PHANDLE EnlistmentHandle);
・このルーチンは、要求されたように、RMがトランザクションによって実施される作業のロールバックを正常に完了していることを示す。RMが、要求されたようにこのトランザクションを正常にロールバックすることができない場合には、RMは、RollbackTransactionを介して完全なロールバックを求める要求を発行すべきである。
・引数:
TransactionHandle:このロールバックオペレーションが完了しているトランザクションを示すハンドルを与える。
・リターン値:
Figure 2007509409
CommitComplete
(IN PHANDLE EnlistmentHandle);
・このルーチンは、要求されたように、RMが、トランザクションによって実施される作業のコミットを完了していることを示す。
・引数:
TransactionHandle:このコミットオペレーションが完了しているトランザクションを示すハンドルを与える。
・リターン値:
Figure 2007509409
さらに、伝搬ルーチン(propagation routine)をこのカーネルオブジェクトについて提供することができる。このようなルーチンの実施例を以下に示す。
RegisterProtocolAddressInformation
(IN HANDLE ResourceManager、
IN PROTOCOL_ID ProtocolId、
IN ULONG ProtocolInformationSize、
IN PVOID ProtocolInformation Optional)。
・このルーチンは、リソースマネージャを特定のプロトコルに対する通信リソースマネージャとして登録する。このルーチンはまた、情報のブロブをこのプロトコルに関連づける。ただ1つのリソースマネージャしか、所与のマシン上のあるプロトコルに対して登録をすることができない。
・引数:
ResourceManager:登録中のリソースマネージャにハンドルを与える。
ProtocolId:このプロトコルを識別するGUID。
ProtocolInformationSize:ProtocolInformationのサイズ。
ProtocolInformation:このプロトコルに関連するオプションのブロブ。
・リターン値:
Figure 2007509409
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)のアレイ。このアレイは、プリファランス(preference)によって順序づけすべきである(このアレイ中の第1のプロトコルは、優先のプロトコルであり、第2のプロトコルは、第2最優先のプロトコルであるなど)。
BufferLength:使用可能なバッファの長さを与える。
Buffer:このトランザクションの直列配列を記憶すべきバッファにポインタを与える。
BufferUsed:バッファ中に書き込まれる実際のバイトを記憶すべきロケーションにポインタを与える。
・リターン値:
Figure 2007509409
GetProtocolAddressInformation
(IN ULONG AddressBufferSize、
OUT PVOID AddressBuffer、
OUT PULONG AddressBufferUsed Optional)。
・このルーチンは、このマシン上ですべての登録済みのプロトコルを表現する情報が、AddressBuffer中で、直列に配列されることを要求する。次いでこの情報を別のマシンに渡し、これをPushTransactionに対する引数として使用してAddressInformationが生成されるマシンに対してトランザクションを転送(push)することができる。
・引数:
AddressBufferSize:使用可能なバッファの長さを与える。
AddressBuffer:使用可能なバッファの長さを与える。
AddressBufferUsed:このトランザクションの直列配列が記憶されるバッファのロケーションにポインタを与える。
・リターン値:
Figure 2007509409
PullTransaction
(OUT PHANDLE TransactionHandle、
IN ULONG NumberOfProtocols、
IN PCRM_PROTOCOL_ID ProtocolArray、
IN ULONG BufferLength、
IN PVOID Buffer)。
・このルーチンは、バッファ中の直列配列によって表現されるトランザクションが、トランザクションマネージャにより使用可能になることを要求する。このトランザクションが、登録済みのリソースマネージャのうちの1つによって正常に伝搬された後に、この新しいトランザクションオブジェクトに対するハンドルが戻される。
・引数:
TransactionHandle:この新しいトランザクションを表すハンドルが記憶されるべきところにポインタを与える。
NumberOfProtocols:このプロトコルアレイのサイズを示す。
ProtocolArray:このトランザクションをマーシャリングするために使用することができるプロトコルを指定するPROTOCOL_ID(GUID)のアレイ。このアレイは、プリファランスによって順序づけすべきである(このアレイ中の第1のプロトコルは、優先のプロトコルであり、第2のプロトコルは、第2最優先のプロトコルであるなど)。
BufferLength:使用可能なバッファの長さを与える。
Buffer:このトランザクションの直列配列が記憶されるバッファにポインタを与える。
・リターン値:
Figure 2007509409
PushTransaction
(IN HANDLE TransactionHandle、
IN ULONG NumberOfProtocols、
IN PCRM_PROTOCOL_ID ProtocolArray、
IN ULONG DestinationInfoLength、
IN PVOID DestinationInfo、
IN ULONG ResponseBufferLength、
OUT PVOID ResponseBuffer、
OUT PULONG ResponseBufferUsed Optional、
OUT PULONG PushCookie Optional)。
・このルーチンは、このトランザクションが、プッシュスタイルの伝搬を使用して宛先マシンに伝搬されることを要求する。プロトコルは、ProtocolArray中にリストされる順序で、成功するまで使用されることになる。この宛先マシンへ伝搬する際にどのプロトコルでもうまくいかない場合には、このルーチンはfailureを戻すことになる。
・引数:
TransactionHandle:このリモートマシンに伝搬すべきこのトランザクションオブジェクトにポインタを与える。
DestinationInfoLength:使用可能なDestinationInfoLengthの長さを与える。
DestinationInfo:この宛先についての「エンドポイント」情報が記憶されるバッファに対してポインタを与える。これは、この宛先マシン上のGetProtocolAddressInformationに対する呼出から受信される出力とすることができる。
ResponseBufferLength:使用可能なResponseBufferの長さを与える。
ResponseBuffer:このトランザクションの直列配列が記憶されるバッファにポインタを与える。
PushCookie:このプッシュ要求を表すクッキーが記憶されることになるバッファにポインタを与える。
・リターン値:
Figure 2007509409
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:この新しいトランザクションを表すハンドルが記憶されるロケーションにポインタを与える。
BufferLength:使用可能なバッファの長さを与える。
Buffer:このトランザクションの直列配列が記憶されるバッファにポインタを与える。
・リターン値:
Figure 2007509409
PropagationComplete
(IN HANDLE EnlistmentHandle、
IN ULONG RequestCookie、
IN ULONG BufferLength、
IN PVOID Buffer)。
・トランザクションの伝搬を正常に完了した後に、このルーチンは、CRMによって呼出される。
・引数:
TransactionHandle:この新しいトランザクションを表すハンドルを記憶すべきロケーションにポインタを与える。
RequestCookie:どの要求が完了しているかを示すために、この元のPROPAGATE通知の引数中で受信されたこのRequestCookieを与える。
BufferLength:使用可能なこのバッファの長さを与える。
Buffer:このトランザクションの直列配列が記憶されるバッファにポインタを与える。
・リターン値:
Figure 2007509409
PropagationFailed
(IN HANDLE ResourceManagerHandle、
IN ULONG RequestCookie、
IN STATUS PropStatus)。
・CRMは、このルーチンを使用して要求されたときにこのトランザクションを伝搬することに失敗していることを示す。
・引数:
TransactionHandle:この新しいトランザクションを表すハンドルを記憶すべきロケーションにポインタを与える。
BufferLength:使用可能なこのバッファの長さを与える。
Buffer:このトランザクションの直列配列が記憶されるバッファにポインタを与える。
・リターン値:
Figure 2007509409
実施例のコンピューティング環境
図9は、一般的なコンピュータ環境900を示しており、このコンピュータ環境を使用して本明細書中で説明している技術を実装することができる。このコンピュータ環境900は、コンピューティング環境の一実施例にすぎず、コンピュータおよびネットワークアーキテクチャの利用範囲あるいは機能について、どのような限定も示唆するものではない。また、このコンピュータ環境900は、この実施例のコンピュータ環境900において示されたコンポーネントのうちのどの1つまたは組合せに関してもどのような依存性または要件を有するものとも解釈すべきではない。
コンピュータ環境900は、コンピュータ902の形態の汎用コンピューティングデバイスを含んでいる。コンピュータ902のコンポーネントは、それだけには限定されないが、1つまたは複数のプロセッサまたは処理装置904と、システムメモリ906と、プロセッサ904を含めて様々なシステムコンポーネントをシステムメモリ906に結合するシステムバス908とを含むことが可能である。
システムバス908は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーティドグラフィックスポート(accelerated graphics port)、および様々なバスアーキテクチャのうちのどれかを使用したプロセッサバスまたはローカルバスを含めて、いくつかのタイプのバス構造のうちの1つまたは複数のいずれかを表す。実施例として、このようなアーキテクチャは、ISAバス、MCAバス、EISA(Enhanced ISA拡張ISA)バス、VESA(Video Electronics Standard Associationビデオエレクトロニクス規格協会)ローカルバス、メザニンバスとしても知られているPCIバス、PCIエクスプレス(Express)バス、USB、SD(Secure Digitalセキュアデジタル)バス、またはIEEE1394バス、すなわちファイヤワイヤ(FireWire)を含んでいる。
コンピュータ902は、様々なコンピュータ読取り可能媒体を含むこともできる。このような媒体は、コンピュータ902によってアクセス可能な任意の入手可能な媒体とすることが可能であり、揮発性媒体も不揮発性媒体も、着脱可能媒体も着脱不能媒体も含んでいる。
システムメモリ906は、RAM(random access memoryランダムアクセスメモリ)910などの揮発性メモリ、および/またはROM(read only memory読取り専用メモリ)912やフラッシュRAMなどの不揮発性メモリの形態のコンピュータ読取り可能媒体を含んでいる。起動中などにコンピュータ902内の要素間で情報を転送する助けをする基本ルーチンを含むBIOS(Basic input/output system基本入出力システム)914は、ROM912またはフラッシュRAMに記憶される。RAM910は、一般に処理装置904によって直ちにアクセス可能な、かつ/または現在操作されているデータおよび/またはプログラムモジュールを含んでいる。
コンピュータ902は、他の着脱可能/着脱不能の揮発性/不揮発性のコンピュータストレージ媒体を含むこともできる。実施例として、図9は、着脱不能の不揮発性の磁気媒体(図示せず)から読み取りそれに書き込むためのハードディスクドライブ916、着脱可能な不揮発性の磁気ディスク920(例えば、「フロッピー(登録商標)ディスク」)から読み取りそれに書き込むための磁気ディスクドライブ918、およびCD−ROM、DVD−ROM、他の光媒体など着脱可能な不揮発性の光ディスク924から読み取りまたはそれに書き込みあるいはその両方を行うための光ディスクドライブ922を示している。ハードディスクドライブ916、磁気ディスクドライブ918、および光ディスクドライブ922は、それぞれ1つまたは複数のデータ媒体インターフェース925によってシステムバス908に接続されている。代わりに、ハードディスクドライブ916、磁気ディスクドライブ918、および光ディスクドライブ922は、1つまたは複数のインターフェース(図示せず)によってシステムバス908に接続することもできる。
これらのディスクドライブおよびこれらの関連するコンピュータ読取り可能媒体は、コンピュータ902用のコンピュータ読取り可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを提供する。この実施例では、ハードディスク916、着脱可能磁気ディスク920、および着脱可能光ディスク924が示されているが、磁気カセットまたは他の磁気ストレージデバイス、フラッシュメモリカード、CD−ROM、DVD(digital versatile diskデジタル多用途ディスク)または他の光ストレージ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、EEPROM(electrically erasable programmable read−only memory電気的消去可能プログラム可能読取り専用メモリ)など、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ読取り可能媒体を利用してこの実施例のコンピューティングシステムおよびコンピューティング環境を実装することもできることが理解されよう。
実施例としてオペレーティングシステム926、1つまたは複数のアプリケーションプログラム928、他のプログラムモジュール930、およびプログラムデータ932を含めて、任意数のプログラムモジュールをハードディスク916、磁気ディスク920、光ディスク924、ROM912、および/またはRAM910に記憶することができる。このようなオペレーティングシステム926、1つまたは複数のアプリケーションプログラム928、他のプログラムモジュール930、およびプログラムデータ932(またはそれらの何らかの組合せ)のそれぞれは、前述の実施形態の例に従ってトランザクションを実行して、分散ファイルシステムをサポートする存在するコンポーネントのすべてまたは一部分を実装することができる。
ユーザは、キーボード934やポインティングデバイス936(例えば、「マウス」)などの入力デバイスを介してコマンドおよび情報をコンピュータ902に入力することができる。他の入力デバイス938(詳細には示さず)は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、シリアルポート、および/またはスキャナなどを含むことができる。これらおよび他の入力デバイスは、システムバス908に結合された入出力インターフェース940を介して処理装置904に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインターフェースおよびバス構造によって接続することもできる。
モニタ942または他のタイプのディスプレイデバイスも、ビデオアダプタ944などのインターフェースを介してシステムバス908に接続することができる。モニタ942に加えて、他の出力周辺デバイスには、I/Oインターフェース940を介してコンピュータ902に接続することができるスピーカ(図示せず)やプリンタ946などのコンポーネントも含めることが可能である。
コンピュータ902は、リモートコンピューティングデバイス948など1台または複数台のリモートコンピュータに対する論理接続を使用してネットワーク環境で動作することが可能である。実施例として、リモートコンピューティングデバイス948は、PC、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の共通ネットワークノードなどとすることが可能である。リモートコンピューティングデバイス948は、コンピュータ902に対して本明細書中で説明しているエレメントおよび特徴の多くまたはすべてを含むことができるポータブルコンピュータとして示されている。代わりに、コンピュータ902は、非ネットワーク環境でも同様に動作することができる。
コンピュータ902とリモートコンピュータ948の間の論理接続は、ローカルエリアネットワーク(LAN)950および一般的なワイドエリアネットワーク(WAN)952として示されている。このようなネットワーキング環境はオフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
LANネットワーキング環境中で実装されるとき、コンピュータ902は、ネットワークインターフェースまたはネットワークアダプタ954を介してローカルネットワーク950に接続される。WANネットワーキング環境中で実装されるときには、コンピュータ902は、一般にワイドネットワーク952上で通信を確立するためのモデム956または他の手段を含んでいる。コンピュータ902に内蔵または外付けにすることができるモデム956は、I/Oインターフェース940または他の適切なメカニズムを介してシステムバス908に接続することができる。ここに示すネットワーク接続は実施例であり、コンピュータ902と948との間で少なくとも1つの通信リンクを確立する他の手段を使用することもできる。
コンピューティング環境900と共に示すネットワーク環境などのネットワーク環境において、コンピュータ902に関連して示すプログラムモジュールまたはその一部分は、リモートメモリストレージデバイスに記憶することができる。実施例として、リモートアプリケーションプログラム958は、リモートコンピュータ948のメモリデバイス上に存在する。例示のために、アプリケーションまたはプログラム、およびこのオペレーティングシステムなど他の実行可能なプログラムコンポーネントは、本明細書中では個別のブロックとして示されているが、かかるプログラムおよびコンポーネントは、コンピューティングデバイス902の異なるストレージコンポーネント中にいろいろな時刻に存在し、このコンピュータの少なくとも1つのデータプロセッサによって実行されることが理解されよう。
様々なモジュールおよび技法は、1台または複数台のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な状況において本明細書中において説明することができる。一般に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。これらのプログラムモジュールなどは、仮想マシンや他のジャストインタイムコンパイル実行環境などの中で、ネイティブコード(native code)として実行し、またはダウンロードし実行することができる。一般に、プログラムモジュールの機能は、様々な実施形態において必要に応じて組み合わせ、または分散させることができる。
これらのモジュールおよび技法の実装は、コンピュータ読取り可能媒体の何らかの形態上に記憶し、またはその形態に渡って伝送することができる。コンピュータ読取り可能媒体は、コンピュータによりアクセスすることが可能な任意の使用可能な媒体とすることが可能である。実施例として、限定するものではないが、コンピュータ読取り可能媒体は、「コンピュータストレージ媒体」と「通信媒体」を含むことができる。
「コンピュータストレージ媒体」は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術により実装される揮発性および不揮発性の、着脱可能および着脱不能の媒体を含んでいる。コンピュータストレージ媒体は、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができコンピュータによりアクセスすることが可能な他の任意の媒体を、含んでいる。
「通信媒体」は一般に、搬送波や他の搬送メカニズムなどの被変調データ信号の形で、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータを実施する。通信媒体は、任意の情報配信媒体も含んでいる。用語「被変調データ信号」は、信号中の情報を符号化するようにしてその信号中の1つまたは複数のその特性が設定あるいは変更された信号を意味する。非限定的な実施例にすぎないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体、並びに、音響、RF、赤外線、他の無線媒体などの無線媒体が含まれる。以上のうちの任意の組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれる。
本明細書全体を通して、「一実施形態(one embodiment)」、「一実施形態(an embodiment)」または「実施形態の一例(an example embodiment)」と言及しているが、これらは、説明している特定の機能、構成、または特徴が本発明の少なくとも一実施形態中に含まれることを意味する。したがって、このようなフレーズの使用によって、ただ1つの実施形態を超えたものについて言及することができる。さらに、この説明される機能、構成、または特徴は、1つまたは複数の実施形態において適切な任意の方法で組み合わせることができる。
しかし、本発明は、1つまたは複数の特定の細部によらなくても、あるいは、他の方法、リソース、材料などを用いても実行することができることは当業者に理解されるだろう。他の事例においては、本発明の態様を単にあいまいにしてしまうことがないように、よく知られている構成、リソース、またはオペレーションを詳細に示さず、または説明していない。
本発明の実施形態の例および用途について例示し説明してきたが、本発明は上述の正確な構成およびリソースに限定されるものでないことを理解されたい。本明細書中に開示している本発明の方法およびシステムの構成、オペレーション、および細部において、請求している本発明の範囲を逸脱することなく、当業者にとって明らかな様々な修正、変更、および変形を行うことができる。
トランザクション処理リモートファイルオペレーションを使用することができるシステムの一実施例を示す図である。 図1のシステムのクライアントおよびサーバのコンポーネントの一実施例を示す図である。 図2のクライアントとサーバの間のトランザクション処理リモートファイルオペレーションについての実施例の処理フローを示す図である。 図2のクライアントとサーバの間のトランザクション処理リモートファイルオペレーションについての実施例の処理フローを示す図である。 図2のクライアントおよびサーバによる複数のリモートファイルアクセスの一実施例を示す図である。 ネットワーク上のトランザクションの2相コミットを実施するための一実施例の処理フローを示す図である。 トランザクション管理を実装するためのコンポーネントの一実施例を示す図である。 カーネルレベルトランザクションについての一実施例処理フローを示す図である。 セキュリティフィーチャの一実施例を示す図である。 様々な実施形態による、本明細書中で説明される技法を実装するために使用することができる一般的なコンピュータ環境を示す図である

Claims (58)

  1. ローカルデバイスとリモートデバイスとの間でトランザクション処理リモートファイルオペレーションをサポートするシステムであって、
    トランザクションマネージャと、
    要求を受信して、前記リモートデバイス中に存在するファイルに対してファイルオペレーションを実行するリダイレクタであって、前記ローカルデバイスおよび前記リモートデバイスはネットワークに接続され、前記リダイレクタは、トランザクション内において前記ネットワーク上で前記リモートデバイスに前記要求を送信することと、
    を備えることを特徴とするシステム。
  2. 前記トランザクションマネージャは、ファイルシステムに一体化されていないことを特徴とする請求項1に記載のシステム。
  3. 前記リダイレクタは、前記ファイルに関連付けられたファイルシステム識別子(Fid)およびバージョン識別子を含む、前記リモートデバイスからの受信ファイル情報であることを特徴とする請求項1に記載のシステム。
  4. 前記リダイレクタは、前記ファイルに関連付けられた前記Fid情報および前記バージョン識別子情報を含む、前記ファイルに関連付けられたファイル制御ブロック(FCB)を選択的に作成することを特徴とする請求項3に記載のシステム。
  5. 前記リダイレクタは、既存のFCBを前記要求に対して使用することができるかどうかを判定することを特徴とする請求項4に記載のシステム。
  6. 前記リダイレクタは、コミットされていないトランザクションに関連付けられた既存のFCBを前記要求に対して使用することができるかどうかを判定することを特徴とする請求項5に記載のシステム。
  7. 前記リダイレクタは、既存のFCBを前記要求に対して使用することができるかどうかについて判定する際に、前記要求についてのパスネームおよびトランザクションコンテキストを前記既存のFCBに関連付けられたパスネームと比較することを特徴とする請求項5に記載のシステム。
  8. 前記トランザクションマネージャは、カーネルレベルトランザクションマネージャであることを特徴とする請求項1に記載のシステム。
  9. 前記リダイレクタは、前記リダイレクタにより要求されなかった前記ファイルについて実行されているファイルオペレーションに応答して、前記リモートデバイスが前記ローカルマシンに信号で伝えるべきことを、前記要求中に選択的に指示することを特徴とする請求項1に記載のシステム。
  10. 前記リダイレクタは、サーバメッセージブロック(SMB)プロトコルに基づいたプロトコルを使用して前記トランザクションを要求と共に送信することを特徴とする請求項1に記載のシステム。
  11. 前記プロトコルは、非トランザクション処理リモートファイルオペレーションをサポートすることを特徴とする請求項10に記載のシステム。
  12. 請求項1に記載のコンポーネントをその上に記憶していることを特徴とするコンピュータ読取り可能媒体。
  13. ローカルデバイスとリモートデバイスとの間でトランザクション処理リモートファイルオペレーションをサポートするシステムであって、
    前記ローカルデバイス中に存在するファイルについてトランザクション処理ファイルオペレーションを求める要求をリモートデバイスから受信するサーバコンポーネント(SRV)と、
    トランザクションマネージャと、
    前記SRVコンポーネントおよび前記トランザクションマネージャに応答して、前記ファイルについて前記要求されたファイルオペレーションを実行するファイルシステムであって、前記ローカルデバイスおよび前記リモートデバイスは、ネットワークに接続されることと、
    を備えること特徴とするシステム。
  14. 前記SRVコンポーネントは、前記ファイルに関連付けられたファイルシステム識別子(Fid)およびバージョン識別子を前記リモートデバイスに提供することを特徴とする請求項13に記載のシステム。
  15. 前記トランザクションマネージャは、カーネルレベルトランザクションマネージャであることを特徴とする請求項13に記載のシステム。
  16. 前記ファイルシステムは、前記リモートデバイスにより要求されなかった前記ファイルについて実行されているファイルオペレーションに応答して、選択的に、前記SRVコンポーネントが前記リモートデバイスに信号で伝えるようにすることを特徴とする請求項13に記載のシステム。
  17. 前記SRVコンポーネントは、サーバメッセージブロック(SMB)プロトコルに基づいたプロトコルを使用して、前記トランザクションを要求と共に送信することを特徴とする請求項13に記載のシステム。
  18. 前記プロトコルは、非トランザクション処理リモートファイルオペレーションをサポートすることを特徴とする請求項17に記載のシステム。
  19. 請求項12に記載のコンポーネントをその上に記憶していることを特徴とするコンピュータ読取り可能媒体。
  20. ローカルデバイス上でトランザクション処理リモートファイルオペレーションを実装する方法であって、
    トランザクション処理リモートファイルオペレーションを求める要求を受信するステップと、
    トランザクションを検索するステップと、
    前記トランザクションをマーシャリングするステップと、
    前記トランザクションを前記要求と共にネットワーク上でリモートデバイスに送信するステップと、
    前記ファイルオペレーションからもたらされる情報を前記リモートデバイスから受信するステップと、
    を備えることを特徴とする方法。
  21. 前記リモートデバイスから受信される情報は、ファイル識別子(Fid)およびバージョン識別子を含むことを特徴とする請求項20に記載の方法。
  22. トランザクション処理リモートファイルオペレーションを求める要求を受信する前記ステップは、
    前記要求がリモートデバイス上のファイルオペレーションを求めるものかどうかを判定するステップと、
    前記要求がリモートデバイス上のファイルオペレーションを求めるものである場合に前記要求に対する名前を提供するステップと、
    前記ファイルに関連付けられた前記Fid情報および前記バージョン識別子情報を含む、前記ファイルに関連付けられたファイル制御ブロック(FCB)を選択的に作成するステップと、
    をさらに含むことを特徴とする請求項21に記載の方法。
  23. FCBを選択的に作成する前記ステップは、既存のFCBを前記要求に対して使用することができるかどうかを判定するステップをさらに含むことを特徴とする請求項22に記載の方法。
  24. 既存のFCBを前記要求に対して使用することができるかどうかを判定する前記ステップは、前記既存のFCBがコミットされていないトランザクションに関連付けられているかどうかを判定するステップをさらに含むことを特徴とする請求項23に記載の方法。
  25. 既存のFCBが前記要求に対して使用することができるかどうかを判定する前記ステップは、前記要求に対するパスネームおよびトランザクションコンテキストを前記既存のFCBに関連付けられたパスネームと比較するステップをさらに含むことを特徴とする請求項23に記載の方法。
  26. 前記方法は、カーネルモードで実行されることを特徴とする請求項20に記載の方法。
  27. 前記ローカルデバイス以外のデバイスにより要求された前記ファイルについて実行されているファイルオペレーションに応答して、前記リモートデバイスが前記ローカルマシンに信号で伝えるべきことを前記要求中に選択的に指示するステップをさらに備えることを特徴とする請求項20に記載の方法。
  28. 前記トランザクションは、サーバメッセージブロック(SMB)プロトコルに基づいたプロトコルを使用して要求と共に送信されることを特徴とする請求項20に記載の方法。
  29. 前記プロトコルは、非トランザクション処理リモートファイルオペレーションをサポートすることを特徴とする請求項28に記載の方法。
  30. トランザクション処理リモートファイルオペレーションを求める要求を受信するステップと、
    トランザクションを検索するステップと、
    前記トランザクションをマーシャリングするステップと、
    前記トランザクションを前記要求と共にネットワーク上でリモートデバイスに送信するステップと、
    前記ファイルオペレーションからもたらされる情報を前記リモートデバイスから受信するステップと、
    を備えるオペレーションを実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ読取り可能媒体。
  31. 前記リモートデバイスから受信される情報は、ファイル識別子(Fid)およびバージョン識別子を含むことを特徴とする請求項30に記載のコンピュータ読取り可能媒体。
  32. トランザクション処理リモートファイルオペレーションを求める要求を受信する前記ステップは、
    前記要求がリモートデバイス上のファイルオペレーションを求めるものかどうかを判定するステップと、
    前記要求がリモートデバイス上のファイルオペレーションを求めるものである場合に前記要求に対する名前を提供するステップと、
    前記ファイルに関連付けられた前記Fid情報および前記バージョン識別子情報を含む、前記ファイルに関連付けられたファイル制御ブロック(FCB)を選択的に作成するステップと、
    をさらに含むことを特徴とする請求項31に記載のコンピュータ読取り可能媒体。
  33. FCBを選択的に作成する前記ステップは、既存のFCBを前記要求に対して使用することができるかどうかを判定するステップをさらに含むことを特徴とする請求項32に記載のコンピュータ読取り可能媒体。
  34. 既存のFCBを前記要求について使用することができるかどうかを判定する前記ステップは、前記既存のFCBがコミットされていないトランザクションに関連付けられているかどうかを判定するステップをさらに含むことを特徴とする請求項33に記載のコンピュータ読取り可能媒体。
  35. ローカルデバイスとリモートデバイスとの間でトランザクション処理リモートファイルオペレーションを実装する方法であって、
    前記ローカルデバイス中に存在するファイルについてトランザクション処理ファイルオペレーションを求める要求をリモートデバイスから受信するステップであって、前記ローカルデバイスおよび前記リモートデバイスはネットワークに接続されていることと、
    前記トランザクションの一部分となる前記要求されたファイルオペレーションを前記ファイルについて実行するステップと、
    を備えることを特徴とする方法。
  36. 前記ファイルに関連付けられたファイルシステム識別子(Fid)およびバージョン識別子を前記リモートデバイスに提供するステップをさらに備えることを特徴とする請求項35に記載の方法。
  37. 前記方法は、カーネルモードで実行されることを特徴とする請求項35に記載の方法。
  38. 前記リモートデバイスにより要求されなかった前記ファイルについて実行されるファイルオペレーションに応答して、前記リモートデバイスに選択的に信号を伝えるステップをさらに備えることを特徴とする請求項35に記載の方法。
  39. 前記ローカルデバイスと前記リモートデバイスは、サーバメッセージブロック(SMB)プロトコルに基づいたプロトコルを使用して、前記ネットワーク上で選択的に情報をやりとりすることを特徴とする請求項35に記載の方法。
  40. 前記プロトコルは、非トランザクション処理リモートファイルオペレーションをサポートすることを特徴とする請求項39に記載の方法。
  41. ローカルデバイス中に存在するファイルについてトランザクション処理ファイルオペレーションを求める要求をリモートデバイスから受信するステップであって、前記ローカルデバイスおよび前記リモートデバイスはネットワークに接続されていることと、
    前記トランザクションの一部分となる前記要求されたファイルオペレーションを前記ファイルについて実行するステップと、
    を備えるオペレーションを実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ読取り可能媒体。
  42. 前記オペレーションは、前記ファイルに関連付けられたファイルシステム識別子(Fid)およびバージョン識別子を前記リモートデバイスに提供するステップをさらに備えることを特徴とする請求項41に記載のコンピュータ読取り可能媒体。
  43. 前記オペレーションは、カーネルモードで実行されることを特徴とする請求項41に記載のコンピュータ読取り可能媒体。
  44. 前記オペレーションは、前記リモートデバイスにより要求されなかった前記ファイルについて実行されるファイルオペレーションに応答して、前記リモートデバイスに選択的に信号を伝えるステップをさらに備えることを特徴とする請求項41に記載のコンピュータ読取り可能媒体。
  45. ネットワークに接続されたローカルデバイスとリモートデバイスの間でトランザクション処理リモートファイルオペレーションをサポートするシステムであって、
    トランザクションを管理する手段と、
    前記リモートデバイス中に存在するファイルについてファイルオペレーションを実行するためにトランザクションを伴う要求を前記リモートデバイスに送信する手段と、
    を備えることを特徴とするシステム。
  46. 前記ファイルに関連付けられたファイルシステム識別子(Fid)およびバージョン識別子を含むファイル情報を前記リモートデバイスから受信する手段をさらに備えることを特徴とする請求項45に記載のシステム。
  47. 前記ファイルに関連付けられた前記Fid情報および前記バージョン識別子情報を含む、前記ファイルに関連付けられたファイル制御ブロック(FCB)を選択的に作成する手段をさらに備えることを特徴とする請求項46に記載のシステム。
  48. 既存のFCBを前記要求に対して使用することができるかどうかを判定する手段をさらに備えることを特徴とする請求項47に記載のシステム。
  49. コミットされていないトランザクションに関連付けられた既存のFCBを前記要求に対して使用することができるかどうかを判定する手段をさらに備えることを特徴とする請求項48に記載のシステム。
  50. リダイレクタにより要求されなかった前記ファイルについて実行されているファイルオペレーションに応答して、前記リモートデバイスが前記ローカルマシンに信号を伝えるべきことを前記要求中に選択的に指示する手段をさらに備えることを特徴とする請求項45に記載のシステム。
  51. 前記トランザクションマネージャは、ファイルシステムに一体化されていないことを特徴とする請求項13に記載のシステム。
  52. ネットワーク上でトランザクションファイルオペレーションを実行する際に使用する方法であって、
    第1のコンピューティングプラットフォーム中に存在するトランザクションマネージャからプリプリペア通知を受信するステップと、
    前記第1のコンピューティングプラットフォームから第2のコンピューティングプラットフォームに前記ネットワークを介してファイルオペレーションデータを提供するステップと、
    前記第1のコンピューティングプラットフォーム中に存在する前記トランザクションマネージャからプリペア通知を受信するステップと、
    前記プリペア通知を含む前記第2のコンピューティングプラットフォームに前記ネットワ−クを介してメッセージを提供するステップと、
    を備えることを特徴とする方法。
  53. ネットワ−ク上でトランザクション処理ファイルオペレーションを実行する際に使用する方法であって、
    トランザクション情報を受信するステップと、
    ファイルもしくはディレクトリを作成もしくはオープンするために、前記ネットワ−クに接続されたコンピューティングプラットフォームに対して、前記トランザクション情報および要求を前記ネットワ−クを介して送信するステップであって、前記要求は第1の構造を含み、前記第1の構造はトランザクションコンテキストを保持するフィールド並びに前記トランザクション情報の長さを保持するフィールドを含むことと、
    を備えることを特徴とする方法。
  54. 前記要求に対する応答は、ファイルシステム識別子を保持するフィールド、並びに、バージョン識別子を保持するフィールドを含む第2の構造を備えることを特徴とする請求項53に記載の方法。
  55. 前記ネットワ−クに接続された前記コンピューティングプラットフォームがトランザクション処理ファイルオペレーションをサポートするかどうかを示すフィールドを含む応答を受信するステップをさらに備えることを特徴とする請求項53に記載の方法。
  56. トランザクション情報、並びに、トランザクションが前記ファイルと共に使用されることを示すフィールドを含むファイルを見つける要求を、前記ネットワークを介して前記コンピューティングプラットフォームに送信するステップをさらに備えることを特徴とする請求項53に記載の方法。
  57. 前記ネットワークに接続された前記コンピューティングプラットフォームからの、トランザクション状態変化に関する通知を提供するメッセージを前記ネットワ−クを介して受信するステップをさらに備えることを特徴とする請求項53に記載の方法。
  58. ネットワ−ク上でトランザクション処理ファイルオペレーションを実行する際に使用する方法であって、
    第2のコンピューティングプラットフォームにおいて第1のコンピューティングプラットフォームからのプリプリペア通知を受信するステップと、
    前記第2のコンピュータプラットフォーム中に存在するトランザクションマネージャに対して前記プリプリペア通知を提供するステップと、
    前記第2のコンピューティングプラットフォームにおいて、前記ネットワークを介して、前記第1のコンピューティングプラットフォームからのファイルオペレーションデータを受信するステップと、
    前記第2のコンピューティングプラットフォーム中に存在するファイルシステムに対して前記ファイルオペレーションデータを提供するステップと、
    前記ネットワークを介して前記第1のコンピューティングプラットフォームからのプリペア通知を受信するステップと、
    前記第2のコンピューティングプラットフォーム中に存在する前記トランザクションマネージャに前記プリペア通知を提供するステップと、
    を備えることを特徴とする方法。
JP2006536567A 2003-10-24 2004-07-22 ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム Expired - Lifetime JP4769191B2 (ja)

Applications Claiming Priority (3)

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
PCT/US2004/023642 WO2005045738A2 (en) 2003-10-24 2004-07-22 Method and system for transacted file operations over a network

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011063055A Division JP5307845B2 (ja) 2003-10-24 2011-03-22 ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム

Publications (2)

Publication Number Publication Date
JP2007509409A true JP2007509409A (ja) 2007-04-12
JP4769191B2 JP4769191B2 (ja) 2011-09-07

Family

ID=34522451

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006536567A Expired - Lifetime JP4769191B2 (ja) 2003-10-24 2004-07-22 ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム
JP2011063055A Expired - Lifetime JP5307845B2 (ja) 2003-10-24 2011-03-22 ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011063055A Expired - Lifetime JP5307845B2 (ja) 2003-10-24 2011-03-22 ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム

Country Status (11)

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

Families Citing this family (36)

* 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 白光株式会社 電気部品着脱装置
WO2005045619A2 (en) * 2003-10-31 2005-05-19 Landmark Technology Partners, Inc. 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
US7571168B2 (en) * 2005-07-25 2009-08-04 Parascale, Inc. Asynchronous file replication and migration in a storage network
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
US8280925B2 (en) * 2007-09-28 2012-10-02 Xcerion Aktiebolag Resolution of multi-instance application execution
US9027030B2 (en) 2007-11-29 2015-05-05 Red Hat, Inc. Commit-one-phase distributed transactions with multiple starting participants
US8688641B1 (en) * 2008-03-31 2014-04-01 Symantec Operating Corporation Per user and per process layer visibility
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
RU2439657C2 (ru) * 2009-04-06 2012-01-10 Иван Илларионович Сныткин Устройство формирования кодовых словарей нелинейных рекуррентных последовательностей
CA2829108A1 (en) * 2011-03-21 2012-09-27 Thomson Licensing Replicating data
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
CN102346773B (zh) * 2011-09-23 2013-10-02 深圳市赫迪威信息技术有限公司 文件操作方法、控制器及文件操作系统
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
WO2015096849A1 (en) * 2013-12-23 2015-07-02 Telefonaktiebolaget L M 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
CN108352995B (zh) * 2016-11-25 2020-09-08 华为技术有限公司 一种smb业务故障处理方法和存储设备
KR102862568B1 (ko) 2016-11-29 2025-09-22 삼성전자주식회사 전자장치, 전자장치의 제어방법 및 기록매체
CN106599323B (zh) * 2017-01-03 2020-04-10 北京百度网讯科技有限公司 在分布式文件系统中实现分布式管道的方法和装置
RU2749754C1 (ru) * 2020-09-23 2021-06-16 Владимир Саулович Айзин Резервированное серверное устройство
CN112948844B (zh) * 2021-01-28 2024-07-23 维沃移动通信有限公司 控制方法、装置及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003530646A (ja) * 2000-03-30 2003-10-14 マイクロソフト コーポレイション トランザクショナルファイルシステム

Family Cites Families (22)

* 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
US5734828A (en) * 1995-08-30 1998-03-31 Intel Corporation System for accessing/delivering on-line/information services via individualized environments using streamlined application sharing host and client services
WO1998037655A1 (en) 1996-12-20 1998-08-27 Financial Services Technology Consortium Method and system for processing electronic documents
JP2000509237A (ja) * 1997-02-07 2000-07-18 サムスン エレクトロニクス カンパニー リミテッド 電子メールシステムにおけるグループメッセージの送信および処理方法
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 若井産業株式会社 ナットの包装方法と包装体
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
KR20030023230A (ko) * 2001-09-12 2003-03-19 주식회사 크로스쉬프트 클라이언트 서버 환경의 개발 시스템 및 방법
CN1411238A (zh) * 2002-05-31 2003-04-16 华为技术有限公司 通信设备输出重定向的实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003530646A (ja) * 2000-03-30 2003-10-14 マイクロソフト コーポレイション トランザクショナルファイルシステム

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5307845B2 (ja) ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム
CN106415538B (zh) 使用共享文件访问-rest接口的文件服务
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
US7454516B1 (en) Scalable virtual partitioning of resources
US7591015B2 (en) Secure kernel transactions
JP2003501726A (ja) サーバ・エージェント・システム
US6687716B1 (en) File consistency protocols and methods for carrying out the protocols
JP2007528555A (ja) ストレージ・プラットフォームにおけるロッキングとアイソレーションのためのシステムおよび方法
US20080109466A1 (en) Virtual Deletion In Merged Registry keys
Pfaff Rfc 7047: The open vswitch database management protocol
US7539999B2 (en) Kernel-level transactions
CN102597995A (zh) 同步数据库和非数据库资源
Adam Samba's Way Toward SMB 3.0
US20260089152A1 (en) Managed policy for internal stage network policy
BRPI0406404B1 (pt) A system for supporting transacted remote file operations between a local device and a remote device, and method for implementing a transacted remote file operation on a local device
Potnis et al. Concurrency control and recovery on lightweight directory access protocol

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100827

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110322

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110323

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110519

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110610

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110617

R150 Certificate of patent or registration of utility model

Ref document number: 4769191

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100827

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term