createDirectoryA 函式 (fileapi.h)

建立新目錄。 如果基礎檔案系統支援檔案和目錄的安全性,函式會將指定的安全性描述元套用至新的目錄。

若要指定範本目錄,請使用 CreateDirectoryEx 函式。

若要以交易作業的形式執行此作業,請使用 CreateDirectoryTransacted 函式

語法

BOOL CreateDirectoryA(
  [in]           LPCSTR                lpPathName,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

參數

[in] lpPathName

要建立之目錄的路徑。

根據預設,名稱限制為MAX_PATH個字元。 若要將此限制延伸至 32,767 寬字元,請在路徑前面加上 「\\?\」。 如需詳細資訊,請參閱命名檔案、路徑與命名空間

提示

從 Windows 10 版本 1607 開始,您可以選擇移除MAX_PATH限制,而不需在前面加上 「\\?\」。 如需詳細資訊,請參閱 命名檔案、路徑和命名空間 的一節。

[in, optional] lpSecurityAttributes

SECURITY_ATTRIBUTES結構的指標。 結構的 lpSecurityDescriptor 成員會指定新目錄的安全性描述元。 如果 lpSecurityAttributesNull,目錄會取得預設的安全性描述元。 目錄預設安全性描述元中的 ACL 會繼承自其父目錄。

目的檔案系統必須支援檔案和目錄的安全性,這個參數才能生效。 (當 GetVolumeInformation 傳回 FS_PERSISTENT_ACLS.) 時,就會指出此情況

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 可能的錯誤包括下列各項。

傳回碼 描述
ERROR_ALREADY_EXISTS
指定的目錄已經存在。
ERROR_PATH_NOT_FOUND
一或多個中繼目錄不存在;此函式只會在路徑中建立最終目錄。

備註

某些檔案系統,例如 NTFS 檔案系統,支援個別檔案和目錄的壓縮或加密。 在針對這類檔案系統格式化的磁片區上,新目錄會繼承其父目錄的壓縮和加密屬性。

應用程式可以使用設定FILE_FLAG_BACKUP_SEMANTICS旗標來呼叫CreateFile,以取得目錄的控制碼。 如需程式碼範例,請參閱 CreateFile

若要支援查詢此物件之安全性描述元的繼承函式,可能會啟發式判斷並報告該繼承生效。 如需詳細資訊,請參閱 可繼承 ACE 的自動傳播

在Windows 8和Windows Server 2012中,下列技術支援此函式。

技術 支援
伺服器訊息區 (SMB) 3.0 通訊協定 Yes
SMB 3.0 透明容錯移轉 (TFO) Yes
具有向外延展檔案共用的 SMB 3.0 (SO) Yes
叢集共用磁片區檔案系統 (CsvFS) Yes
彈性檔案系統 (ReFS)
 

範例

如需範例,請參閱 擷取和變更檔案屬性

注意

fileapi.h 標頭會將 CreateDirectory 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 fileapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CreateDirectoryEx

CreateDirectoryTransacted

CreateFile

建立和刪除目錄

目錄管理功能

RemoveDirectory

SECURITY_ATTRIBUTES

SECURITY_INFORMATION