共用方式為


CreateFile2FromAppW 函式 (fileapifromapp.h)

建立或開啟檔案或 I/O 裝置。 此函式的行為與 CreateFile2 相同,不同之處在於此函式遵守 通用 Windows 平台 應用程式安全性模型。

語法

WINSTORAGEAPI HANDLE CreateFile2FromAppW(
  LPCWSTR                           lpFileName,
  DWORD                             dwDesiredAccess,
  DWORD                             dwShareMode,
  DWORD                             dwCreationDisposition,
  LPCREATEFILE2_EXTENDED_PARAMETERS pCreateExParams
) noexcept;

參數

lpFileName

要建立或開啟的檔案或裝置名稱。

如需特殊裝置名稱的相關信息,請參閱 定義 MS-DOS 裝置名稱

若要建立檔案數據流,請指定檔名、冒號,然後指定數據流的名稱。 如需詳細資訊,請參閱 檔案數據流

如需退出退出 MAX_PATH 限制而不加上 “\\?\” 的詳細資訊,請參閱 命名檔案、路徑和命名空間 的一節以取得詳細數據。

dwDesiredAccess

要求的檔案或裝置存取權,可摘要為讀取、寫入,或兩者皆無法) 。

最常使用的值是 GENERIC_READGENERIC_WRITE或兩者 () GENERIC_READ | GENERIC_WRITE 。 如需詳細資訊,請參閱 一般訪問許可權檔案安全性和訪問許可權檔案訪問許可權常數,以及 ACCESS_MASK

如果此參數為零,即使 GENERIC_READ 存取遭到拒絕,應用程式也可以查詢某些元數據,例如檔案、目錄或裝置屬性,而不需要存取該檔案或裝置。

您無法要求存取模式與已開啟句柄的開啟要求中 dwShareMode 參數所指定的共用模式衝突。

dwShareMode

檔案或裝置的要求共用模式,這些模式可以是讀取、寫入、刪除、全部或無 (請參閱下表) 。 存取屬性或擴充屬性的要求不受此旗標影響。

如果這個參數為零且函式成功,則檔案或裝置無法共用,而且在檔案或裝置的句柄關閉之前無法再次開啟。 如需詳細資訊,請參閱<備註>一節。

您無法要求與現有要求中具有開啟句柄之存取模式衝突的共用模式。 此函式會失敗, 而且 GetLastError 函式會傳回 ERROR_SHARING_VIOLATION

若要讓進程在另一個進程開啟檔案或裝置時共用檔案或裝置,請使用下列一或多個值的相容組合。 如需此參數與 dwDesiredAccess 參數之有效組合的詳細資訊,請參閱 建立和開啟檔案

注意 不論進程內容為何,每個開啟句柄的共享選項都會維持有效狀態,直到該句柄關閉為止。

 

意義
0 0x00000000

防止其他進程在要求刪除、讀取或寫入存取時開啟檔案或裝置。 只有在應用程式具有檔案的寫入許可權時,才會授與檔案或目錄的獨佔存取權。

FILE_SHARE_DELETE 0x00000004

啟用檔案或裝置上的後續開啟作業,以要求刪除存取權。

否則,如果進程要求刪除存取權,其他進程就無法開啟檔案或裝置。

如果未指定此旗標,但檔案或裝置已開啟以進行刪除存取,則函式會失敗。

注意 刪除存取允許刪除和重新命名作業。
 
FILE_SHARE_READ 0x00000001

啟用檔案或裝置上的後續開啟作業,以要求讀取許可權。

否則,如果進程要求讀取許可權,其他進程就無法開啟檔案或裝置。

如果未指定此旗標,但檔案或裝置已開啟以供讀取存取,則函式會失敗。

如果正在開啟檔案或目錄,而且未指定此旗標,而且呼叫端沒有檔案或目錄的寫入許可權,則函式會失敗。

FILE_SHARE_WRITE 0x00000002

啟用檔案或裝置上的後續開啟作業,以要求寫入存取權。

否則,如果進程要求寫入許可權,其他進程就無法開啟檔案或裝置。

如果未指定此旗標,但檔案或裝置已開啟以供寫入存取,或具有寫入許可權的檔案對應,則函式會失敗。

dwCreationDisposition

要對存在或不存在之檔案或裝置採取的動作。

對於檔案以外的裝置,此參數通常會設定為 OPEN_EXISTING

此參數必須是下列其中一個值,無法合併:

意義
CREATE_ALWAYS 2

一律建立新的檔案。

如果指定的檔案存在且可寫入,則函式會截斷檔案、函式成功,且最後錯誤碼會設定為 ERROR_ALREADY_EXISTS ( 183) 。

如果指定的檔案不存在且是有效的路徑,則會建立新的檔案、函式成功,且最後一個錯誤碼會設定為零。

CREATE_NEW 1

只有在檔案不存在時,才會建立新的檔案。

如果指定的檔案存在,函式會失敗,且最後一個錯誤碼會設定為 ( 80) ERROR_FILE_EXISTS。

如果指定的檔案不存在,而且是可寫入位置的有效路徑,則會建立新的檔案。

OPEN_ALWAYS 4

一律開啟檔案。

如果指定的檔案存在,函式會成功,而且最後一個錯誤碼會設定為 ERROR_ALREADY_EXISTS ( 183) 。

如果指定的檔案不存在,而且是可寫入位置的有效路徑,則函式會建立檔案,並將最後一個錯誤碼設定為零。

OPEN_EXISTING 3

只有在檔案存在時才開啟檔案或裝置。

如果指定的檔案或裝置不存在,則函式會失敗,且最後一個錯誤碼會設定為 ERROR_FILE_NOT_FOUND ( 2) 。

TRUNCATE_EXISTING 5

開啟檔案並截斷檔案,使其大小為零位元組,只有當檔案存在時。

如果指定的檔案不存在,函式會失敗,且最後一個錯誤碼會設定為 ERROR_FILE_NOT_FOUND ( 2) 。

呼叫進程必須開啟檔案,並將 GENERIC_WRITE 位設定為 dwDesiredAccess 參數的一部分。

pCreateExParams

選擇性 CREATEFILE2_EXTENDED_PARAMETERS 結構的指標。

傳回值

如果函式成功,則傳回值是指定檔案、裝置、命名管道或郵件位置的開啟句柄。

如果函式失敗,傳回值 會INVALID_HANDLE_VALUE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

規格需求

需求
最低支援的用戶端 Windows 10 (版本 1803)
標頭 fileapifromapp.h