Fungsi RxInitializeContext (rxcontx.h)
RxInitializeContext menginisialisasi struktur data RX_CONTEXT yang ada.
Sintaks
void RxInitializeContext(
[in, optional] IN PIRP Irp,
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN ULONG InitialContextFlags,
[in, out] IN OUT PRX_CONTEXT RxContext
);
Parameter
[in, optional] Irp
Penunjuk ke IRP untuk dienkapsulasi oleh struktur RX_CONTEXT ini.
[in] RxDeviceObject
Penunjuk ke objek perangkat tempat RX_CONTEXT dan IRP ini berlaku.
[in] InitialContextFlags
Kumpulan nilai awal untuk anggota Bendera dari struktur data RX_CONTEXT yang akan disimpan dalam struktur RX_CONTEXT. Nilai awal ini dapat berupa kombinasi dari enumerasi berikut:
RX_CONTEXT_FLAG_WAIT
Ketika nilai ini diatur, IRP tidak boleh diposting untuk dieksekusi nanti oleh proses sistem file, tetapi harus menunggu selesai.
RX_CONTEXT_FLAG_MUST_SUCCEED
Ketika nilai ini diatur, operasi harus berhasil. Nilai ini saat ini tidak digunakan oleh RDBSS, tetapi dapat digunakan oleh driver pengalih mini jaringan.
RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING
Ketika nilai ini diatur, operasi harus berhasil untuk operasi non-pemblokiran. Nilai ini saat ini tidak digunakan oleh RDBSS, tetapi dapat digunakan oleh driver pengalih mini jaringan.
[in, out] RxContext
Arahkan ke RX_CONTEXT yang akan diinisialisasi.
Nilai kembali
Tidak ada
Keterangan
RxInitializeContext dipanggil secara internal oleh rutinitas RxCreateRxContext . Jadi rutinitas RxInitializeContext biasanya hanya akan digunakan oleh driver pengalih min jaringan yang mengalokasikan struktur RX_CONTEXT secara langsung daripada memanggil rutinitas RxCreateRxContext untuk mengalokasikan dan menginisialisasi struktur RX_CONTEXT.
Jika parameter Irp dikonfigurasi untuk operasi asinkron, maka anggota Bendera dari struktur RX_CONTEXT yang ditujukkan oleh RxContext juga memiliki kumpulan nilai berikut:
RX_CONTEXT_FLAG_ASYNC_OPERATION juga diatur untuk kondisi berikut:
- Anggota MajorFunctiondari Irp adalah IRP_MJ_READ, IRP_MJ_WRITE, atau IRP_MJ_DEVICE_CONTROL.
- Anggota MajorFunctiondari Irp adalah IRP_MJ_DIRECTORY_CONTROL dan anggota MinorFunction dari IRP adalah IRP_MN_NOTIFY_CHANGE_DIRECTORY.
- Anggota MajorFunctiondari Irp adalah anggota IRP_MJ_FILE_SYSTEM_CONTROL dan NetRoot dari FCB terkait bukan NULL dan anggota Jenis NET_ROOT NET_ROOT_PIPE.
Jika parameter RxDeviceObject menunjukkan bahwa ini adalah objek perangkat RDBSS tingkat atas, maka anggota Bendera struktur RX_CONTEXT juga memiliki kumpulan nilai berikut:
Jika anggota Bendera Irp FileObject memiliki opsi FO_WRITE_THROUGH yang diatur, maka anggota Bendera dari struktur RX_CONTEXT juga memiliki kumpulan nilai berikut:
RxInitializeContext menetapkan sejumlah anggota lain dalam struktur RX_CONTEXT termasuk yang berikut ini:
- Mengatur NodeTypeCode yang tepat, NodeByteSize, SerialNumber, RxDeviceObject, dan menginisialisasi ReferenceCount ke 1.
- Menginisialisasi SyncEvent
- Menginisialisasi ScavengerEntry terkait
- Menginisialisasi entri daftar BlockedOperations
- Mengatur anggota RX_CONTEXT berdasarkan Irp. Ini termasuk CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFcb, NonPagedFcb, pFobx, pRelevantSrvOpen, dan anggota FobxSerialNumber .
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | rxcontx.h (termasuk Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
Lihat juga
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially