REQUEST_OPLOCK_OUTPUT_BUFFER 结构 (winioctl.h)

包含 FSCTL_REQUEST_OPLOCK 控制代码返回的操作锁定 (oplock) 信息。

语法

typedef struct _REQUEST_OPLOCK_OUTPUT_BUFFER {
  WORD        StructureVersion;
  WORD        StructureLength;
  DWORD       OriginalOplockLevel;
  DWORD       NewOplockLevel;
  DWORD       Flags;
  ACCESS_MASK AccessMode;
  WORD        ShareMode;
} REQUEST_OPLOCK_OUTPUT_BUFFER, *PREQUEST_OPLOCK_OUTPUT_BUFFER;

成员

StructureVersion

正在使用的 REQUEST_OPLOCK_OUTPUT_BUFFER 结构的版本。

StructureLength

此结构的长度(以字节为单位)。

OriginalOplockLevel

一个或多个 OPLOCK_LEVEL_CACHE_XXX 值,指示已中断的 oplock 的级别。

有关可能的值,请参阅 REQUEST_OPLOCK_INPUT_BUFFER 结构的 RequestedOplockLevel 成员。

NewOplockLevel

一个或多个 OPLOCK_LEVEL_CACHE_XXX 值,指示要破坏 oplock 的级别,或可用于授予的 oplock 级别,具体取决于返回此缓冲区的操作。

有关可能的值,请参阅 REQUEST_OPLOCK_INPUT_BUFFER 结构的 RequestedOplockLevel 成员。

Flags

一个或多个 REQUEST_OPLOCK_OUTPUT_FLAG_XXX 值。

含义
REQUEST_OPLOCK_OUTPUT_FLAG_ACK_REQUIRED
指示需要确认,并且 OriginalOplockLevel 中描述的 oplock 将继续有效,直到成功确认中断。
REQUEST_OPLOCK_OUTPUT_FLAG_MODES_PROVIDED
指示 ShareModeAccessMode 成员分别包含导致 oplock 中断的请求的共享和访问标志。 有关详细信息,请参见“备注”部分。

AccessMode

如果设置了 REQUEST_OPLOCK_OUTPUT_FLAG_MODES_PROVIDED 标志,并且 OPLOCK_LEVEL_CACHE_HANDLE 级别在 oplock 中断中丢失,则 包含导致中断的请求的访问模式。

ShareMode

如果设置了 REQUEST_OPLOCK_OUTPUT_FLAG_MODES_PROVIDED 标志,并且 OPLOCK_LEVEL_CACHE_HANDLE 级别在 oplock 中断中丢失,则 包含导致中断的请求的共享模式。

注解

REQUEST_OPLOCK_OUTPUT_FLAG_MODES_PROVIDED标志指示 ShareModeAccessMode 字段分别包含导致 oplock 中断的请求的共享和访问标志。 此信息可能会在 OPLOCK_LEVEL_CACHE_HANDLE 级别丢失的中断上提供,并且对于可以关闭其共享和访问模式与导致中断的句柄冲突的句柄的调用方可能很有用。 这可以使它们至少保持一些句柄缓存状态。 请注意,并非所有 丢失OPLOCK_LEVEL_CACHE_HANDLE 级别的中断都将设置此标志。 设置此标志的主要情况是,如果中断是创建操作的结果,该操作需要中断 OPLOCK_LEVEL_CACHE_HANDLE 操作,以避免 ERROR_SHARING_VIOLATION失败。

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
标头 winioctl.h (包括 Windows.h)

另请参阅

FSCTL_REQUEST_OPLOCK

Oplock 语义

REQUEST_OPLOCK_INPUT_BUFFER