IoCheckLinkShareAccess 函数 (wdm.h)

IoCheckLinkShareAccess 例程由文件系统驱动程序(FSDs)或其他最高级别的驱动程序调用,以检查是否允许对文件对象的链接共享访问。

语法

NTSTATUS IoCheckLinkShareAccess(
  [in]                ACCESS_MASK        DesiredAccess,
  [in]                ULONG              DesiredShareAccess,
  [in, out, optional] PFILE_OBJECT       FileObject,
  [in, out, optional] PSHARE_ACCESS      ShareAccess,
  [in, out, optional] PLINK_SHARE_ACCESS LinkShareAccess,
  [in]                ULONG              IoShareAccessFlags
);

参数

[in] DesiredAccess

指定一个 ACCESS_MASK 值,该值指示对给定文件对象的所需访问类型。

[in] DesiredShareAccess

指定对当前打开请求的文件对象的共享访问的所需类型。 此参数的值通常与 ShareAccess 参数相同,该参数在发出打开请求时传递给文件系统或 I/O 管理器的最高级别驱动程序。 此值可以是零,也可以是以下任意组合:

FILE_SHARE_READ

FILE_SHARE_WRITE

FILE_SHARE_DELETE

[in, out, optional] FileObject

指向要检查当前打开请求访问权限的文件对象的指针。

[in, out, optional] ShareAccess

指向与 fileObject 关联的公共共享访问数据结构的指针。 驱动程序应将此结构视为不透明。

[in, out, optional] LinkShareAccess

指向与 fileObject关联的常见链接共享访问数据结构(LINK_SHARE_ACCESS)的指针。 驱动程序应将此结构视为不透明。

[in] IoShareAccessFlags

这些标志的位掩码:

IO_SHARE_ACCESS_NO_WRITE_PERMISSION(0x80000000)指定用户对文件没有写入权限。 当用户没有适当的权限时,此标志用于防止打开文件进行独占读取访问。

IO_SHARE_ACCESS_NON_PRIMARY_STREAM(0x00000080)指定流既不是主数据流也不是目录流。

IO_CHECK_SHARE_ACCESS_UPDATE_SHARE_ACCESS(0x00000001)指示是否更新 SHARE_ACCESS 结构。

IO_CHECK_SHARE_ACCESS_DONT_UPDATE_FILE_OBJECT(0x00000002)表示不更新 FILE_OBJECT 结构。

IO_CHECK_SHARE_ACCESS_DONT_CHECK_READ(0x00000004)表示不检查读取共享访问权限。

IO_CHECK_SHARE_ACCESS_DONT_CHECK_WRITE(0x00000008)表示不检查写入共享访问权限。

IO_CHECK_SHARE_ACCESS_DONT_CHECK_DELETE(0x00000010)表示不检查删除共享访问权限。

IO_CHECK_SHARE_ACCESS_FORCE_CHECK (0x00000020) 指示强制检查共享访问,即使请求不是读/写/删除访问权限。

IO_CHECK_SHARE_ACCESS_FORCE_USING_SCB(0x00000040)指示使用 ShareAccess 强制检查删除共享访问,而不考虑 LinkShareAccess 是否存在。

返回值

如果请求者对文件对象的访问与当前打开的方式兼容,则 IoCheckLinkShareAccess 例程返回STATUS_SUCCESS。 如果由于共享冲突而拒绝请求,则返回STATUS_SHARING_VIOLATION。

言论

执行此例程时,必须锁定 ShareAccess 参数,以阻止来自其他线程的其他访问。 否则,计数可以是同步。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1709
支持的最低服务器 Windows Server 2016
目标平台 普遍
标头 wdm.h
Ntoskrnl.lib

另请参阅

I/O 管理器例程

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess