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 |