ioSetShareAccess 函数 (wdm.h)
IoSetShareAccess 例程设置共享给定文件对象的访问权限。
语法
void IoSetShareAccess(
[in] ACCESS_MASK DesiredAccess,
[in] ULONG DesiredShareAccess,
[in, out] PFILE_OBJECT FileObject,
[out] PSHARE_ACCESS ShareAccess
);
参数
[in] DesiredAccess
指定一个 ACCESS_MASK 值,该值表示为 FileObject 请求的访问类型。 有关系统定义的 DesiredAccess 标志的完整列表,请参阅 IoCreateFile。
[in] DesiredShareAccess
指定要为文件对象设置的共享访问的类型。 此值可以是零,也可以是以下任意组合:
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE
[in, out] FileObject
指向正在设置或重置其共享访问权限的文件对象的指针。
[out] ShareAccess
指向与 FileObject 关联的SHARE_ACCESS结构的指针。 驱动程序应将此结构视为不透明。
返回值
无
备注
只有最高级别的内核模式驱动程序应调用此例程。 调用必须在尝试打开 FileObject 的第一个线程的上下文中进行。
首次打开 FileObject 时,此例程设置访问和共享访问信息。 它返回指向与 FileObject 关联的公共共享访问数据结构的指针。 调用方应保存此指针,供以后在更新访问或关闭文件时使用。
通常,文件系统驱动程序 (FSD) 最有可能调用此例程。 但是,其他最高级别的驱动程序可以调用 IoSetShareAccess 来控制允许对与给定 FileObject 关联的驱动程序创建的设备对象的访问类型。
IoSetShareAccess 不是原子操作。 因此,调用此例程的驱动程序必须通过某种锁(如互斥锁或资源锁)来保护传递给 IoSetShareAccess 的 共享文件对象,以防止共享访问计数损坏。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) , IrqlIoPassive5 (wdm) |