Fungsi ClfsCreateMarshallingArea (wdm.h)
Rutinitas ClfsCreateMarshallingArea membuat area marsekal untuk aliran CLFS dan mengembalikan pointer ke konteks buram yang mewakili area marsekal baru.
Sintaks
CLFSUSER_API NTSTATUS ClfsCreateMarshallingArea(
[in] PLOG_FILE_OBJECT plfoLog,
[in] POOL_TYPE ePoolType,
[in, optional] PALLOCATE_FUNCTION pfnAllocBuffer,
[in, optional] PFREE_FUNCTION pfnFreeBuffer,
[in] ULONG cbMarshallingBuffer,
[in] ULONG cMaxWriteBuffers,
[in] ULONG cMaxReadBuffers,
[out] PVOID *ppvMarshalContext
);
Parameter
[in] plfoLog
Penunjuk ke struktur LOG_FILE_OBJECT yang mewakili aliran CLFS. Pemanggil sebelumnya mendapatkan pointer ini dengan memanggil ClfsCreateLogFile.
[in] ePoolType
Nilai POOL_TYPE yang menentukan jenis memori (halaman, non-halaman, misalnya) yang akan digunakan area marshalling baru untuk blok I/O log-nya.
[in, optional] pfnAllocBuffer
Baik NULL atau pointer ke fungsi yang disediakan penelepon yang mengalokasikan blok I/O log untuk area marsekal. Fungsi alokasi memiliki prototipe berikut:
PVOID
(*PALLOCATE_FUNCTION) (
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes,
IN ULONG Tag
);
Nilai yang dikembalikan dari fungsi alokasi adalah penunjuk ke blok I/O log yang baru dialokasikan.
[in, optional] pfnFreeBuffer
Baik NULL atau penunjuk ke fungsi yang disediakan pemanggil yang membebaskan blok I/O log yang sebelumnya dialokasikan oleh pfnAllocBuffer. Fungsi ini memiliki prototipe berikut:
VOID
(*PFREE_FUNCTION) (
IN PVOID Buffer
);
[in] cbMarshallingBuffer
Ukuran, dalam byte, dari blok I/O log individu yang digunakan area marshalling baru. Ini harus menjadi kelipatan ukuran sektor pada media penyimpanan yang stabil. Ukuran sektor adalah nilai lpBytesPerSector yang dikembalikan dari GetDiskFreeSpace.
[in] cMaxWriteBuffers
Jumlah maksimum blok I/O yang dapat dialokasikan pada satu waktu untuk operasi tulis. Parameter ini memengaruhi frekuensi flush data. Jika Anda tidak perlu mengontrol frekuensi flush data, atur parameter ini ke INFINITE.
[in] cMaxReadBuffers
Jumlah maksimum blok I/O log yang dapat dialokasikan pada satu waktu untuk operasi baca.
[out] ppvMarshalContext
Pointer ke variabel yang menerima pointer ke konteks buram yang mewakili area marshalling baru.
Nilai kembali
ClfsCreateMarshallingArea mengembalikan STATUS_SUCCESS jika berhasil; jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.
Keterangan
Parameter pfnAllocBuffer dan pfnFreeBuffer harus menunjuk ke fungsi yang dialokasikan pemanggil, atau keduanya harus NULL. Jika keduanya adalah NULL, CLFS menyediakan fungsi default untuk mengalokasikan dan membebaskan blok I/O log.
Sebelum memanggil ClfsCreateMarshallingArea, Anda harus menambahkan setidaknya dua kontainer ke log yang mendasar dengan memanggil ClfsAddLogContainer atau ClfsAddLogContainerSet.
Untuk penjelasan tentang konsep dan terminologi CLFS, lihat Sistem File Log Umum.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | wdm.h (termasuk Wdm.h) |
Pustaka | Clfs.lib |
DLL | Clfs.sys |
IRQL | IRQL <= APC_LEVEL |