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 ini adalah panggilan sistem file rekursif (anggota TopLevelIrp di penyimpanan lokal utas adalah Irp saat ini) maka anggota BenderaRxContext juga memiliki nilai berikut:

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

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock