次の方法で共有


OPLOCK_KEY_ECP_CONTEXT構造体 (ntifs.h)

OPLOCK_KEY_ECP_CONTEXT 構造体は、oplock キーをファイルにアタッチするために使用されます。 この構造は、Windows 8 以降のバージョンでは廃止されています。フィルターは代わりに DUAL_OP_LOCK_KEY_ECP_CONTEXTを使用する必要があります。

構文

typedef struct _OPLOCK_KEY_ECP_CONTEXT {
  GUID  OplockKey;
  ULONG Reserved;
} OPLOCK_KEY_ECP_CONTEXT, *POPLOCK_KEY_ECP_CONTEXT;

メンバーズ

OplockKey

oplock キーの GUID。 この GUID は、異なるハンドル間で共有され、同じクライアント キャッシュに属していることを識別します。 2 つのハンドルが同じ oplock キーを共有している場合、1 つのハンドルに対して実行された要求は、もう一方のハンドルで未処理の oplock を中断しません。

Reserved

引っ込み思案。 0 に設定する必要があります。

備考

ファイルの作成時に ECP を使用して追加情報をファイルに関連付ける方法については、「IRP_MJ_CREATE操作で追加の作成パラメーターを使用する 」を参照してください。

ミニフィルターは、ECP が上からダウンしているのを見て、OPLOCK_KEY_ECP_CONTEXT構造体の内容を変更しないでください。 これを使用して、oplock キー ECP に関する情報のみを取得する必要があります。 この問題の詳細については、「System-Defined ECP」を参照してください。

oplock キーを使用すると、アプリケーションは、アプリケーション独自の oplock を中断することなく、同じストリームに対して複数のハンドルを開くことができるようになります。 oplock の中断は、アプリケーションが共有違反 (STATUS_SHARING_VIOLATION) を受け取った後にのみ発生します。

ストリームが開かれると、ストリーム ハンドルに対して Oplock が付与されます。 このようなストリーム ハンドルは、oplock キーに関連付けることができます。 呼び出し元は、ストリーム ハンドルを作成するために、IoCreateFileEx ルーチンに oplock キーを明示的に提供できます。 呼び出し元がハンドルを作成するときに呼び出し元が明示的に oplock キーを指定しない場合、オペレーティング システムはハンドルをハンドルに関連付けられた一意の oplock キーを持つものとして扱います。そのため、ハンドルのキーは他のハンドルの他のキーと異なります。 oplock が付与されたハンドル以外のハンドルでファイル操作が受信され、oplock のハンドルに関連付けられている oplock キーが操作のハンドルに関連付けられているキーと異なり、その操作が現在付与されている oplock と互換性がない場合、その oplock は壊れます。 oplock は、互換性のない操作を実行しているのと同じプロセスまたはスレッドであっても中断します。 たとえば、プロセスが排他 oplock が許可されているストリームを開き、同じプロセスが別の (またはまったく) oplock キーを使用して同じストリームを再度開いた場合、排他 oplock は直ちに切断されます。

Oplock キーは、ハンドルの作成時にハンドルに関連付けられます。 oplock が許可されていない場合でも、ハンドルを oplock キーに関連付けることができます。

oplock キーと oplock キーの詳細については、「Oplock Semantics Overview」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 7;Windows 8 以降の古いバージョン
ヘッダー ntifs.h

関連項目

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx の