Fungsi CreateDirectoryTransactedA (winbase.h)

[Microsoft sangat menyarankan pengembang menggunakan cara alternatif untuk mencapai kebutuhan aplikasi Anda. Banyak skenario yang dikembangkan TxF dapat dicapai melalui teknik yang lebih sederhana dan lebih tersedia. Selain itu, TxF mungkin tidak tersedia di versi Microsoft Windows yang akan datang. Untuk informasi lebih lanjut, dan alternatif TxF, silakan lihat Alternatif untuk menggunakan Transactional NTFS.]

Membuat direktori baru sebagai operasi yang ditransaksikan, dengan atribut direktori templat tertentu. Jika sistem file yang mendasar mendukung keamanan pada file dan direktori, fungsi menerapkan deskriptor keamanan tertentu ke direktori baru. Direktori baru mempertahankan atribut lain dari direktori templat yang ditentukan.

Sintaks

BOOL CreateDirectoryTransactedA(
  [in, optional] LPCSTR                lpTemplateDirectory,
  [in]           LPCSTR                lpNewDirectory,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in]           HANDLE                hTransaction
);

Parameter

[in, optional] lpTemplateDirectory

Jalur direktori yang akan digunakan sebagai templat saat membuat direktori baru. Parameter ini bisa NULL.

Secara default, namanya terbatas pada MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Menamai File, Jalur, dan Namespace.

Tip

Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa menambahkan sebelumnya "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" di Penamaan File, Jalur, dan Namespace untuk detailnya.

Direktori harus berada di komputer lokal; jika tidak, fungsi gagal dan kode kesalahan terakhir diatur ke ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

[in] lpNewDirectory

Jalur direktori yang akan dibuat.

Secara default, namanya terbatas pada MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Menamai File, Jalur, dan Namespace.

Tip

Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa menambahkan sebelumnya "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" di Penamaan File, Jalur, dan Namespace untuk detailnya.

[in, optional] lpSecurityAttributes

Penunjuk ke struktur SECURITY_ATTRIBUTES . Anggota lpSecurityDescriptor dari struktur menentukan deskriptor keamanan untuk direktori baru.

Jika lpSecurityAttributes adalah NULL, direktori akan mendapatkan deskriptor keamanan default. Daftar kontrol akses (ACL) di deskriptor keamanan default untuk direktori diwarisi dari direktori induknya.

Sistem file target harus mendukung keamanan pada file dan direktori agar parameter ini berpengaruh. Ini ditunjukkan ketika GetVolumeInformation mengembalikan FS_PERSISTENT_ACLS.

[in] hTransaction

Handel ke transaksi. Handel ini dikembalikan oleh fungsi CreateTransaction .

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol (0). Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Kemungkinan kesalahan termasuk yang berikut ini.

Menampilkan kode Deskripsi
ERROR_ALREADY_EXISTS
Direktori yang ditentukan sudah ada.
ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION
Anda tidak dapat membuat direktori anak dengan direktori induk yang enkripsinya dinonaktifkan.
ERROR_PATH_NOT_FOUND
Satu atau beberapa direktori perantara tidak ada. Fungsi ini hanya membuat direktori akhir di jalur.

Keterangan

Fungsi CreateDirectoryTransacted memungkinkan Anda membuat direktori yang mewarisi informasi aliran dari direktori lain. Fungsi ini berguna, misalnya, ketika Anda menggunakan direktori Macintosh, yang memiliki aliran sumber daya yang diperlukan untuk mengidentifikasi konten direktori dengan benar sebagai atribut.

Beberapa sistem file, seperti sistem file NTFS, mendukung kompresi atau enkripsi untuk file dan direktori individual. Pada volume yang diformat untuk sistem file tersebut, direktori baru mewarisi atribut kompresi dan enkripsi direktori induknya.

Fungsi ini gagal dengan ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION jika Anda mencoba membuat direktori anak dengan direktori induk yang menonaktifkan enkripsi.

Anda dapat memperoleh handel ke direktori dengan memanggil fungsi CreateFileTransacted dengan set bendera FILE_FLAG_BACKUP_SEMANTICS .

Di Windows 8 dan Windows Server 2012, fungsi ini didukung oleh teknologi berikut.

Teknologi Didukung
Protokol Server Message Block (SMB) 3.0 Tidak
SMB 3.0 Transparent Failover (TFO) Tidak
SMB 3.0 dengan Berbagi File Peluasan Skala (SO) Tidak
Sistem File Volume Bersama Kluster (CsvFS) Tidak
Sistem File Tangguh (ReFS) Tidak
 

SMB 3.0 tidak mendukung TxF.

Catatan

Header winbase.h mendefinisikan CreateDirectoryTransacted sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

CreateFileTransacted

Membuat dan Menghapus Direktori

Fungsi Manajemen Direktori

RemoveDirectoryTransacted

SECURITY_ATTRIBUTES

NTFS Transaksi