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 在不同句柄之间共享,并将它们标识为属于同一客户端缓存。 当两个句柄共享同一个 oplock 键时,对一个句柄执行的请求不会中断另一个句柄上的未完成的 oplock。

Reserved

保留。 必须设置为零。

言论

有关如何在创建文件时使用 ECP 将额外信息与文件相关联的信息,请参阅 将额外创建参数与IRP_MJ_CREATE操作

当看到 ECP 从上面下来时,小筛选器不应更改OPLOCK_KEY_ECP_CONTEXT结构的内容。 应使用它来仅检索有关 oplock 密钥 ECP 的信息。 有关此问题的详细信息,请参阅 System-Defined ECP

Oplock 密钥使应用程序能够打开同一流的多个句柄,而不会中断应用程序自己的 oplock。 仅当应用程序收到共享冲突(STATUS_SHARING_VIOLATION)后,才会发生 oplock 中断。

打开流时,在流句柄上授予 Oplock。 此类流句柄可与 oplock 密钥相关联。 调用方可以显式向 IoCreateFileEx 例程提供 oplock 密钥来创建流句柄。 如果调用方在创建句柄时未显式指定 oplock 键,则操作系统会将句柄视为具有与句柄关联的唯一 oplock 键,以便句柄的密钥与其他任何句柄上的键不同。 如果在授予 oplock 的句柄以外的某个句柄上收到文件操作,并且与 oplock 的句柄关联的 oplock 密钥与与操作的句柄关联的键不同,并且该操作与当前授予的 oplock 不兼容,则该操作将断开。 即使操作锁与执行不兼容操作的进程或线程相同,操作锁也会中断。 例如,如果进程打开一个授予独占 oplock 的流,并且同一进程会再次打开同一流,方法是使用不同的(或否)oplock 键,则独占 oplock 会立即中断。

创建句柄时,Oplock 键与句柄相关联。 即使未授予任何 oplock,也可以将句柄与 oplock 密钥相关联。

有关 oplock 和 oplock 键的详细信息,请参阅 Oplock 语义概述

要求

要求 价值
最低支持的客户端 Windows 7;从 Windows 8 开始过时
标头 ntifs.h

另请参阅

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx