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)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)IrqlIoPassive5(wdm)

另请参阅

ACCESS_MASK

IoCheckShareAccess

IoCreateFile

IoCreateFileEx

IoGetFileObjectGenericMapping

IoGetRelatedDeviceObject

IoRemoveShareAccess

IoUpdateShareAccess