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 參數相同。 此值可以是零,或下列任何組合:
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) 指出即使要求不是读取/寫入/刪除存取,仍強制檢查共用存取。
IO_CHECK_SHARE_ACCESS_FORCE_USING_SCB (0x00000040) 指出不论 LinkShareAccess 是否存在,都使用 ShareAccess 強制檢查刪除共用存取。
傳回值
如果要求者的檔案物件的存取與目前開啟的方式相容, IoCheckLinkShareAccess 例程會傳回STATUS_SUCCESS。 如果因為共用違規而拒絕要求,則會傳回STATUS_SHARING_VIOLATION。
備註
執行這個例程時, ShareAccess 參數必須鎖定其他線程的其他存取。 否則,計數可以同步處理。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 (版本 1709) |
最低支援的伺服器 | Windows Server 2016 |
目標平台 | Universal |
標頭 | wdm.h |
程式庫 | Ntoskrnl.lib |