若要開啟檔案的控制代碼,請執行下列步驟:
建立 OBJECT_ATTRIBUTES 結構,並呼叫 InitializeObjectAttributes 巨集來初始化結構。 您將檔案的物件名稱指定為 ObjectName 參數,用於 InitializeObjectAttributes。
將 OBJECT_ATTRIBUTES 結構傳遞至 IoCreateFile、ZwCreateFile或 ZwOpenFile,以開啟檔案的句柄。
如果檔案不存在,IoCreateFile,ZwCreateFile 會建立它,而 ZwOpenFile 會傳回STATUS_OBJECT_NAME_NOT_FOUND。
請注意,驅動程式幾乎一律使用 ZwCreateFile 或 ZwOpenFile,而不是 IoCreateFile。
當您呼叫 IoCreateFile、ZwCreateFile或 ZwOpenFile時,Windows 主管會建立新的檔案物件來代表檔案,並提供對象的開啟句柄。 此檔案物件會保存,直到您關閉所有開啟的句柄為止。
無論您呼叫哪一個例程,都必須傳遞所需的訪問許可權,作為 DesiredAccess 參數。 這些許可權必須涵蓋驅動程式將執行的所有作業。 下表列出這些作業和相應的存取權限請求。
| 行動 | 必要的訪問許可權 |
|---|---|
從檔案讀取。 |
FILE_READ_DATA或GENERIC_READ |
寫入檔案。 |
FILE_WRITE_DATA或GENERIC_WRITE |
僅往檔案末尾寫入。 |
FILE_APPEND_DATA |
讀取檔案的元數據,例如檔案的建立時間。 |
FILE_READ_ATTRIBUTES或GENERIC_READ |
寫入檔案的元數據,例如檔案的建立時間。 |
FILE_WRITE_ATTRIBUTES或GENERIC_WRITE |
如需 DesiredAccess可用值的詳細資訊,請參閱 ZwCreateFile。