CreateFile函數是Windows操作系統中用于創建或打開一個文件或設備的函數。下面是對CreateFile函數的詳細解釋:
函數原型:
HANDLE CreateFile(
LPCSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
參數解釋:
lpFileName:要創建或打開的文件或設備的名稱。可以是一個字符串,也可以是一個文件路徑。
dwDesiredAccess:指定要對文件或設備進行的訪問權限。可以是以下常量之一:
GENERIC_READ:可讀取文件。
GENERIC_WRITE:可寫入文件。
GENERIC_EXECUTE:可執行文件。
GENERIC_ALL:可讀取、寫入和執行文件。
其他專用權限常量,如FILE_READ_DATA、FILE_WRITE_DATA等。
FILE_SHARE_READ:其他進程可讀取文件。
FILE_SHARE_WRITE:其他進程可寫入文件。
FILE_SHARE_DELETE:其他進程可刪除文件。
0:禁止其他進程訪問文件。
lpSecurityAttributes:指定文件或設備的安全屬性。如果為NULL,則使用默認安全屬性。
dwCreationDisposition:指定文件或設備的創建方式。可以是以下值之一:
CREATE_NEW:創建新文件,如果文件已存在則創建失敗。
CREATE_ALWAYS:創建新文件,如果文件已存在則覆蓋。
OPEN_EXISTING:打開已存在的文件,如果文件不存在則打開失敗。
OPEN_ALWAYS:打開已存在的文件,如果文件不存在則創建新文件。
TRUNCATE_EXISTING:截斷已存在的文件,文件大小為0。
FILE_ATTRIBUTE_NORMAL:普通文件屬性。
FILE_FLAG_WRITE_THROUGH:將數據寫入文件后立即將其傳遞給磁盤,而不是寫入磁盤緩存。
FILE_FLAG_OVERLAPPED:啟用異步I/O。
FILE_FLAG_DELETE_ON_CLOSE:關閉文件時刪除文件。
其他文件屬性和標志常量,如FILE_ATTRIBUTE_HIDDEN、FILE_FLAG_SEQUENTIAL_SCAN等。
返回值:
如果函數調用成功,則返回一個指向已創建或打開的文件或設備的句柄。如果函數調用失敗,則返回INVALID_HANDLE_VALUE。
使用CreateFile函數可以創建或打開各種文件和設備,包括磁盤文件、串口、打印機等。該函數具有靈活的參數選項,可以根據需要設置訪問權限、共享方式、創建方式和文件屬性。在創建或打開文件后,可以使用返回的句柄進行讀取、寫入和關閉等操作。