共用方式為


ZwOpenFile 函式 (wdm.h)

ZwOpenFile 例程會開啟現有的檔案、目錄、裝置或磁碟區。

語法

NTSYSAPI NTSTATUS ZwOpenFile(
  [out] PHANDLE            FileHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes,
  [out] PIO_STATUS_BLOCK   IoStatusBlock,
  [in]  ULONG              ShareAccess,
  [in]  ULONG              OpenOptions
);

參數

[out] FileHandle

接收檔案句柄的 HANDLE 變數指標。

[in] DesiredAccess

指定 ACCESS_MASK 值,決定物件的要求存取權。 如需詳細資訊,請參閱 ZwCreateFileDesiredAccess 參數。

[in] ObjectAttributes

指定物件名稱和其他屬性之 OBJECT_ATTRIBUTES 結構的指標。 使用 InitializeObjectAttributes 初始化這個結構。 如果呼叫端未在系統線程內容中執行,它必須在呼叫 InitializeObjectAttributes 時設定OBJ_KERNEL_HANDLE屬性。

[out] IoStatusBlock

接收最終完成狀態和所要求作業相關信息 之IO_STATUS_BLOCK 結構的指標。

[in] ShareAccess

指定檔案的共享存取類型。 如需詳細資訊,請參閱 ZwCreateFileShareAccess 參數。

[in] OpenOptions

指定開啟檔案時要套用的選項。 如需詳細資訊,請參閱 ZwCreateFileCreateOptions 參數。

傳回值

ZwOpenFile 會傳回STATUS_SUCCESS或適當的NTSTATUS錯誤碼。 在後者的情況下,呼叫端可以藉由檢查 IoStatusBlock 參數來尋找失敗原因的詳細資訊。

備註

ZwOpenFile 提供呼叫端可用來操作檔案數據的句柄,或檔案物件的狀態和屬性。 ZwOpenFile 提供 ZwCreateFile 所提供的功能子集。 如需詳細資訊,請參閱 在驅動程式中使用檔案

FileHandle 所指向的句柄不再使用之後,驅動程式必須呼叫 ZwClose 以關閉它。

如果呼叫端未在系統線程內容中執行,則必須確保所建立的任何句柄都是私用句柄。 否則,進程可以在其中執行驅動程序的內容中存取句柄。 如需詳細資訊,請參閱 物件句柄

ZwOpenFile 的呼叫端必須在 IRQL = PASSIVE_LEVEL且啟用特殊核心 APC 時執行

如果呼叫此函式發生在使用者模式中,您應該使用名稱 「NtOpenFile」 而不是 「ZwOpenFile」。

對於核心模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本在處理和解譯輸入參數的方式可能會有不同的行為。 如需例程 NtXxxZwXxx 版本之間的關聯性詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程

規格需求

需求
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL (请参阅一节)
DDI 合規性規則 HwStorPortProhibitedDDIs (storport) PowerIrpDDis (wdm)

另請參閱

ACCESS_MASK

InitializeObjectAttributes

使用原生系統服務例程的 Nt 和 Zw 版本

ZwCreateFile