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也會針對下列條件設定:

  • IrpMajorFunction 成員IRP_MJ_READ、IRP_MJ_WRITE或IRP_MJ_DEVICE_CONTROL。
  • IrpMajorFunction 成員是IRP_MJ_DIRECTORY_CONTROL,而 IRPMinorFunction 成員是IRP_MN_NOTIFY_CHANGE_DIRECTORY。
  • IrpMajorFunction 成員是IRP_MJ_FILE_SYSTEM_CONTROL,而相關聯 FCB 的 NetRoot 成員不是 NULL,而且NET_ROOT的 Type 成員是NET_ROOT_PIPE。
如果這是遞歸文件系統呼叫, (線程本機記憶體中的 TopLevelIrp 成員是目前的 Irp) ,則 RxContextFlags 成員也會設定下列值:

如果 RxDeviceObject 參數指出這是最上層 RDBSS 裝置物件,則 RX_CONTEXT 結構的 Flags 成員也會設定下列值:

如果 Irp FileObject Flags 成員已設定 FO_WRITE_THROUGH 選項,則 RX_CONTEXT 結構的 Flags 成員也有下列值集:

RxInitializeContext 會在 RX_CONTEXT 結構中設定一些其他成員,包括下列專案:

  • 設定適當的 NodeTypeCodeNodeByteSizeSerialNumberRxDeviceObject,並將 ReferenceCount 初始化為 1。
  • 初始化 SyncEvent
  • 初始化相關聯的 ScavengerEntry
  • 初始化 BlockedOperations 的清單專案
  • 根據 Irp 設定RX_CONTEXT成員。 這些包括 CurrentIrpOriginalThreadMajorFunctionMinorFunctionCurrentIrpSppFcbNonPagedFcbpFobxpRelevantSrvOpenFobxSerialNumber 成員。

規格需求

需求
目標平台 桌面
標頭 rxcontx.h (包含 Rxprocs.h rxcontx.h)
IRQL <= APC_LEVEL

另請參閱

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock