開啟檔案的控制碼
若要開啟檔案的控制碼,請執行下列步驟:
建立 OBJECT_ATTRIBUTES 結構,並呼叫 InitializeObjectAttributes 宏來初始化結構。 您可以將檔案的物件名稱指定為InitializeObjectAttributes的ObjectName參數。
將 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。