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 的信息。 有关此问题的详细信息,请参阅 系统定义的 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 键相关联。

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

要求

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

另请参阅

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx