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)

另请参阅

ACCESS_MASK

IoCheckShareAccess

IoCreateFile

IoCreateFileEx

IoGetFileObjectGenericMapping

IoGetRelatedDeviceObject

IoRemoveShareAccess

IoUpdateShareAccess