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 的共用檔案物件,例如Mutex或資源鎖定,以避免共用存取計數損毀。

規格需求

需求
最低支援的用戶端 從 Windows 2000 開始提供。
目標平台 Universal
標頭 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