ioCheckLinkShareAccess 函数 (wdm.h)

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

语法

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

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

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
Library Ntoskrnl.lib

另请参阅

I/O 管理器例程

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess