共用方式為


IoCheckLinkShareAccess 函式 (wdm.h)

IoCheckLinkShareAccess 例程是由文件系統驅動程式 (FSD) 或其他最高層級驅動程式呼叫,以檢查是否允許連結共用存取檔案物件。

語法

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) 表示強制檢查共用存取權。

不論LinkShareAccess是否存在,IO_CHECK_SHARE_ACCESS_FORCE_USING_SCB (0x00000040) 指出是否使用ShareAccess強制檢查刪除共用存取權。

傳回值

如果要求者對檔案物件的存取與目前開啟的方式相容,IoCheckLinkShareAccess 例程會傳回STATUS_SUCCESS。 如果因為共用違規而拒絕要求,則會傳回STATUS_SHARING_VIOLATION。

言論

ShareAccess 參數必須在執行此例程時,針對其他線程的其他存取鎖定。 否則計數可以是同步處理。

要求

要求 價值
最低支援的用戶端 Windows 10 版本 1709
支援的最低伺服器 Windows Server 2016
目標平臺 普遍
標頭 wdm.h
連結庫 Ntoskrnl.lib

另請參閱

I/O 管理員例程

IoRemoveLinkShareAccess

IoSetLinkShareAccess

IoUpdateLinkShareAccess