Fungsi ClfsCreateLogFile (wdm.h)

Rutinitas ClfsCreateLogFile membuat atau membuka aliran CLFS. Jika perlu, ClfsCreateLogFile juga membuat log fisik mendasar yang menyimpan rekaman aliran.

Sintaks

CLFSUSER_API NTSTATUS ClfsCreateLogFile(
  [out]          PPLOG_FILE_OBJECT    pplfoLog,
  [in]           PUNICODE_STRING      puszLogFileName,
  [in]           ACCESS_MASK          fDesiredAccess,
  [in]           ULONG                dwShareMode,
  [in, optional] PSECURITY_DESCRIPTOR psdLogFile,
  [in]           ULONG                fCreateDisposition,
  [in]           ULONG                fCreateOptions,
  [in]           ULONG                fFlagsAndAttributes,
  [in]           ULONG                fLogOptionFlag,
  [in, optional] PVOID                pvContext,
  [in]           ULONG                cbContext
);

Parameter

[out] pplfoLog

Penunjuk ke variabel yang menerima penunjuk ke struktur LOG_FILE_OBJECT yang mewakili instans aliran yang terbuka.

[in] puszLogFileName

Penunjuk ke struktur UNICODE_STRING yang memasok nama aliran atau log fisik yang mendasar.

Jika aliran sudah ada dan merupakan satu-satunya aliran log khusus, namanya memiliki log formulir:nama log fisik, di mana nama log fisik adalah nama jalur, pada sistem file yang mendasar, dari log fisik yang ada yang berisi catatan aliran.

Jika aliran belum ada dan adalah menjadi satu-satunya aliran log khusus (yang belum ada), namanya memiliki nama log formulir:log fisik, di mana nama log fisik adalah nama jalur, pada sistem file yang mendasar, dari log fisik yang akan dibuat untuk menyimpan catatan aliran.

Jika aliran adalah (atau akan menjadi) salah satu aliran log multipleks, namanya memiliki log formulir:nama log fisik::nama aliran, di mana nama log fisik adalah nama jalur, pada sistem file yang mendasar, dari log fisik yang menyimpan rekaman aliran, dan nama aliran adalah nama aliran yang berbagi (atau akan berbagi) log fisik tersebut.

Jika Anda ingin membuat log multipleks yang tidak memiliki aliran untuk saat ini, gunakan nama formulir log:nama log fisik::, di mana nama log fisik adalah nama jalur, pada sistem file yang mendasar, dari log fisik yang akan dibuat.

Daftar berikut ini memberikan beberapa contoh nama yang valid.

  • "Log:c:\myLog" membuat atau membuka log khusus dan satu alirannya.
  • "Log:c:\myCommonLog::" membuat log multipleks yang belum memiliki aliran apa pun.
  • "Log:c:\myCommonLog::Stream1" membuat atau membuka salah satu aliran (Stream1) dari log multipleks.

[in] fDesiredAccess

ACCESS_MASK yang menyediakan jenis akses yang akan dimiliki klien (dengan menggunakan pointer yang dikembalikan dalam pplfoLog) ke aliran. Jika parameter ini nol, klien dapat mengkueri aliran untuk atributnya, tetapi tidak dapat membaca dari atau menulis ke aliran. Parameter ini dapat berupa nol atau kombinasi apa pun dari bendera berikut:

Bendera Makna
GENERIC_READ Klien memiliki akses baca ke aliran.
GENERIC_WRITE Klien memiliki akses tulis ke aliran.
DELETE Klien dapat menandai aliran untuk penghapusan.

[in] dwShareMode

Mode berbagi aliran, yang dapat berupa nol (tidak dibagikan) atau kombinasi bendera berikut:

Bendera Makna
FILE_SHARE_DELETE Permintaan berikutnya untuk membuka aliran dengan akses penghapusan akan berhasil.
FILE_SHARE_READ Permintaan berikutnya untuk membuka aliran dengan akses baca akan berhasil.
FILE_SHARE_WRITE Permintaan berikutnya untuk membuka aliran dengan akses tulis akan berhasil.

[in, optional] psdLogFile

Penunjuk ke struktur SECURITY_DESCRIPTOR yang memasok atribut keamanan untuk aliran. Parameter ini bisa NULL.

[in] fCreateDisposition

Tindakan yang harus diambil bergantung pada apakah aliran sudah ada. Parameter ini harus diatur ke salah satu nilai berikut:

Nilai Makna
CREATE_NEW Buat aliran baru jika aliran belum keluar. Gagal jika aliran sudah ada.
OPEN_EXISTING Buka aliran yang ada. Gagal jika aliran belum ada.
OPEN_ALWAYS Buka aliran yang ada. Buat aliran jika belum ada.

[in] fCreateOptions

Sekumpulan bendera yang menentukan opsi yang akan diterapkan saat membuat atau membuka aliran. Parameter ini bisa menjadi nol atau kombinasi yang kompatibel dari bendera berikut:

Bendera Makna
FILE_NO_INTERMEDIATE_BUFFERING Rekaman aliran tidak dapat di-cache di buffer internal driver.
FILE_SYNCHRONOUS_IO_ALERT Semua operasi pada aliran dilakukan secara sinkron. Setiap penantian atas nama penelepon tunduk pada penghentian dini dari pemberitahuan. Jika bendera ini diatur, bendera FILE_SYNCHRONOUS_IO_NONALERT harus dibersihkan.
FILE_SYNCHRONOUS_IO_NONALERT Semua operasi pada aliran dilakukan secara sinkron. Menunggu di sistem yang menyinkronkan antrean I/O dan penyelesaian tidak tunduk pada pemberitahuan. Jika bendera ini diatur, bendera FILE_SYNCHRONOUS_IO_ALERT harus dibersihkan.

[in] fFlagsAndAttributes

Nilai yang menentukan apakah aliran dibuka untuk akses normal atau baca-saja. Parameter ini harus diatur ke salah satu

FILE_ATTRIBUTE_NORMAL atau FILE_ATTRIBUTE_READONLY.

[in] fLogOptionFlag

Petunjuk tentang hubungan antara CLFS dan komponen yang membuat atau membuka aliran. Parameter ini harus diatur ke salah satu nilai berikut:

Nilai Makna
CLFS_FLAG_NO_FLAGS CLFS dan komponen pembuatan memiliki hubungan standar dan normal. Komponen mode kernel menggunakan nilai ini kecuali mereka termasuk dalam salah satu dari tiga kategori lain yang tercantum dalam tabel ini. Jika pvContext bukan NULL, CLFS memverifikasi bahwa cbContext lebih besar dari nol. Jika tidak, pvContext dan cbContext diabaikan.
CLFS_FLAG_REENTRANT_FILE_SYSTEM Komponen pembuatan adalah sistem file yang menyediakan penyimpanan dasar untuk CLFS. CLFS menggunakan sistem file untuk mengalokasikan kontainer, dan sistem file menggunakan aliran CLFS. Dalam hal ini, dimungkinkan bagi sistem file untuk memanggil CLFS dan bagi CLFS untuk melakukan panggilan kembali ke sistem file pada utas yang sama atau utas yang berbeda. Jika pvContext bukan NULL, CLFS memverifikasi bahwa cbContext lebih besar dari nol. Jika tidak, pvContext dan cbContext diabaikan.
CLFS_FLAG_NON_REENTRANT_FILTER Komponen pembuatan adalah driver filter sistem file yang mengirim semua I/O CLFS-nya ke tingkat tertentu di bawah sendiri pada tumpukan filter. Opsi ini memungkinkan driver filter untuk membuat log CLFS tanpa melihat I/O pengelogannya sendiri. Penelepon meneruskan objek perangkat target non-NULL dalam parameter pvContext dengan cbContext diatur ke ukuran yang sesuai. CLFS menggunakan rutinitas IoCreateFileSpecifyDeviceObjectHint untuk membuat kontainer pada tingkat yang ditargetkan dalam tumpukan filter I/O yang ditentukan oleh objek perangkat.
CLFS_FLAG_REENTRANT_FILTER Komponen pembuatan adalah driver filter sistem file yang mengirim semua I/O CLFS-nya ke bagian atas tumpukan filter. Filter memiliki hubungan rekursif dengan CLFS karena memfilter I/O pengelogannya sendiri ketika CLFS melakukan operasi sistem file apa pun pada kontainernya. Parameter pvContext menyediakan sarana bagi filter untuk mengaitkan konteks yang dapat dikenali dengan kontainer CLFS-nya saat I/O log turun ke tumpukan filter. Parameter cbContext menentukan ukuran konteks buram dalam byte.
CLFS_FLAG_MINIFILTER_LEVEL Komponen pembuatan adalah driver minifilter sistem file yang mengirim semua CLFS I/O-nya ke tingkat yang ditentukan di bawah sendiri pada tumpukan filter. Opsi ini memungkinkan minifilter untuk membuat log CLFS tanpa melihat I/O pengelogannya sendiri. Pemanggil meneruskan objek konteks minifilter non-NULL dalam parameter pvContext dengan cbContext diatur ke ukuran yang sesuai. CLFS menggunakan rutinitas IoCreateFileSpecifyDeviceObjectHint untuk membuat kontainer pada ketinggian (ditentukan dalam konteks minifilter) dalam tumpukan minifilter manajer filter.

[in, optional] pvContext

Penunjuk ke konteks. Cara konteks ditafsirkan tergantung pada nilai yang diteruskan ke fLogOptionsFlag.

[in] cbContext

Ukuran, dalam byte, dari konteks yang diacu oleh pvContext. Jika pvContext bukan NULL, parameter ini harus lebih besar dari nol.

Mengembalikan nilai

ClfsCreateLogFile mengembalikan STATUS_SUCCESS jika berhasil; jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.

Keterangan

Saat Anda membuat aliran CLFS, aliran tersebut didukung oleh log CLFS fisik yang mendasar. Log yang mendasar dapat didedikasikan (hanya mendukung satu aliran) atau multipleks (mendukung beberapa aliran). Log khusus tidak dapat dikonversi ke log multipleks, dan log multipleks tidak dapat dikonversi ke log khusus.

Nama log CLFS fisik tidak menyertakan ekstensi .blf.

Untuk penjelasan tentang konsep dan terminologi CLFS, lihat Sistem File Log Umum.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Server 2003 R2, Windows Vista, dan versi Windows yang lebih baru.
Target Platform Desktop
Header wdm.h (termasuk Wdm.h)
Pustaka Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

Lihat juga

ClfsCloseAndResetLogFile

ClfsCloseLogFileObject

ClfsDeleteLogByPointer

ClfsDeleteLogFile