次の方法で共有


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 キーを共有している場合、一方のハンドルで実行された要求は、もう一方のハンドルの未処理の oplock を中断しません。

Reserved

予約済み。 0 に設定する必要があります。

注釈

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

ミニフィルターは、ECP が上から下がってくるのを見たときに、OPLOCK_KEY_ECP_CONTEXT構造体の内容を変更しないでください。 これを使用して、oplock キー ECP に関する情報のみを取得する必要があります。 この問題の詳細については、「 システム定義の ECP」を参照してください。

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

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

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

oplock キーと oplock キーの詳細については、「 Oplock セマンティクスの概要」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 7;Windows 8以降は廃止されました
Header ntifs.h

こちらもご覧ください

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx