Bagikan melalui


Makro FsRtlInitPerStreamContext (ntifs.h)

Makro FsRtlInitPerStreamContext menginisialisasi struktur konteks driver filter.

Sintaks

void FsRtlInitPerStreamContext(
   _fc,
   _owner,
   _inst,
   _cb
);

Parameter

_fc

Penunjuk ke struktur FSRTL_PER_STREAM_CONTEXT yang dialokasikan pemanggil yang akan digunakan untuk mempertahankan informasi konteks untuk aliran file. Struktur ini dapat digunakan apa adanya atau disematkan dalam struktur konteks per aliran yang ditentukan driver. Kedua jenis struktur biasanya dialokasikan dengan memanggil ExAllocatePoolWithTag.

_owner

Penunjuk ke variabel yang dialokasikan pemanggil yang secara unik mengidentifikasi pemilik struktur konteks per aliran. Format variabel ini adalah driver filter − spesifik. Penulis filter harus memilih nilai yang bermakna dan nyaman, seperti alamat objek driver atau objek perangkat. Penelepon harus menentukan nilai non-NULL untuk parameter ini.

_inst

Pointer ke driver filter − variabel yang dialokasikan yang dapat digunakan untuk membedakan antara struktur konteks per aliran yang dibuat oleh driver filter yang sama. Format variabel ini adalah driver filter − spesifik. Penulis filter harus memilih nilai yang bermakna dan nyaman, seperti alamat objek konteks aliran untuk aliran file. (Untuk mendapatkan alamat ini dari objek file, gunakan makro FsRtlGetPerStreamContextPointer .) Parameter ini bersifat opsional dan dapat berupa NULL.

_cb

Arahkan ke rutinitas panggilan balik yang membebaskan struktur konteks per aliran. Penelepon harus menentukan nilai non-NULL untuk parameter ini. Rutinitas ini dan parameternya didefinisikan sebagai berikut:

typedef
VOID (*PFREE_FUNCTION) (
          IN PVOID Buffer
          );

Buffer

Arahkan ke struktur konteks per aliran yang akan dikosongkan. Rutinitas FreeCallback biasanya mentransmisikan pointer ini ke jenis penunjuk struktur yang sesuai dan membebaskannya dengan memanggil ExFreePool.

Nilai kembali

Tidak ada

Keterangan

Driver filter sistem file menggunakan makro FsRtlInitPerStreamContext untuk menginisialisasi struktur konteks per aliran yang baru dialokasikan sebelum mengaitkannya dengan aliran file. Struktur konteks yang diinisialisasi dapat diteruskan sebagai parameter ke FsRtlInsertPerStreamContext.

FsRtlInitPerStreamContext menyimpan alamat rutinitas FreeCallback di anggota FreeCallback dari struktur FSRTL_PER_STREAM_CONTEXT.

Rutinitas FreeCallback disebut di IRQL <= APC_LEVEL. Biasanya, itu disebut di IRQL PASSIVE_LEVEL.

Catatan Rutinitas FreeCallback tidak dapat secara rekursif memanggil ke dalam sistem file atau memperoleh sumber daya sistem file apa pun. Selain itu, rutinitas ini harus mengasumsikan bahwa objek file untuk aliran file telah dibebaskan.
 
Untuk mengaitkan struktur konteks per aliran yang diinisialisasi dengan aliran file, panggil FsRtlInsertPerStreamContext.

Setelah struktur konteks dikaitkan dengan aliran file, struktur tersebut dapat diambil dengan memanggil FsRtlLookupPerStreamContext atau dihapus dengan memanggil FsRtlRemovePerStreamContext.

Untuk informasi selengkapnya, lihat Melacak konteks Per-Stream dalam Driver Filter Sistem File Warisan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP; Pembaruan Rollup untuk Windows 2000 Paket Layanan 4 (SP4)
Target Platform Desktop
Header ntifs.h (termasuk Ntifs.h)
IRQL Tingkat apa pun

Lihat juga

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts