RxInitializeContext 函式 (rxcontx.h)
RxInitializeContext 會初始化現有的RX_CONTEXT數據結構。
語法
void RxInitializeContext(
[in, optional] IN PIRP Irp,
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN ULONG InitialContextFlags,
[in, out] IN OUT PRX_CONTEXT RxContext
);
參數
[in, optional] Irp
這個RX_CONTEXT結構所封裝之 IRP 的指標。
[in] RxDeviceObject
這個RX_CONTEXT和 IRP 套用之裝置物件的指標。
[in] InitialContextFlags
要儲存在RX_CONTEXT 結構中之RX_CONTEXT數據結構之 Flags 成員的初始值集。 這些初始值可以是下列列舉的任何組合:
RX_CONTEXT_FLAG_WAIT
設定此值時,不應該張貼 IRP 以供文件系統進程稍後執行,但應該等候完成。
RX_CONTEXT_FLAG_MUST_SUCCEED
設定此值時,作業必須成功。 RDBSS 目前未使用此值,但網路迷你重新導向器驅動程式可能會使用它。
RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING
設定此值時,非封鎖作業的作業必須成功。 RDBSS 目前未使用此值,但網路迷你重新導向器驅動程式可能會使用它。
[in, out] RxContext
要初始化之RX_CONTEXT的指標。
傳回值
無
備註
RxCreateRxContext 例程會在內部呼叫 RxInitializeContext。 因此 ,RxInitializeContext 例程通常只能由直接配置RX_CONTEXT結構的網路最小重新導向器驅動程式使用,而不是呼叫 RxCreateRxContext 例程來配置和初始化RX_CONTEXT結構。
如果 Irp 參數已設定為異步操作,則 RxContext 所指向之RX_CONTEXT結構的 Flags 成員也會設定下列值:
RX_CONTEXT_FLAG_ASYNC_OPERATION也會針對下列條件設定:
- Irp 的 MajorFunction 成員IRP_MJ_READ、IRP_MJ_WRITE或IRP_MJ_DEVICE_CONTROL。
- Irp 的 MajorFunction 成員是IRP_MJ_DIRECTORY_CONTROL,而 IRP 的 MinorFunction 成員是IRP_MN_NOTIFY_CHANGE_DIRECTORY。
- Irp 的 MajorFunction 成員是IRP_MJ_FILE_SYSTEM_CONTROL,而相關聯 FCB 的 NetRoot 成員不是 NULL,而且NET_ROOT的 Type 成員是NET_ROOT_PIPE。
如果 RxDeviceObject 參數指出這是最上層 RDBSS 裝置物件,則 RX_CONTEXT 結構的 Flags 成員也會設定下列值:
如果 Irp FileObject Flags 成員已設定 FO_WRITE_THROUGH 選項,則 RX_CONTEXT 結構的 Flags 成員也有下列值集:
RxInitializeContext 會在 RX_CONTEXT 結構中設定一些其他成員,包括下列專案:
- 設定適當的 NodeTypeCode、 NodeByteSize、 SerialNumber、 RxDeviceObject,並將 ReferenceCount 初始化為 1。
- 初始化 SyncEvent
- 初始化相關聯的 ScavengerEntry
- 初始化 BlockedOperations 的清單專案
- 根據 Irp 設定RX_CONTEXT成員。 這些包括 CurrentIrp、 OriginalThread、 MajorFunction、 MinorFunction、 CurrentIrpSp、 pFcb、 NonPagedFcb、 pFobx、 pRelevantSrvOpen 和 FobxSerialNumber 成員。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | rxcontx.h (包含 Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
另請參閱
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially