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

Lihat juga

ClfsAddLogContainer

ClfsAddLogContainerSet

ClfsCreateLogFile

ClfsDeleteMarshallingArea

LOG_FILE_OBJECT

POOL_TYPE