다음을 통해 공유


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 대한 포인터입니다.

반환 값

없음

설명

RxInitializeContextRxCreateRxContext 루틴에 의해 내부적으로 호출됩니다. 따라서 RxInitializeContext 루틴은 일반적으로 RxCreateRxContext 루틴을 호출하여 RX_CONTEXT 구조를 할당하고 초기화하는 대신 RX_CONTEXT 구조를 직접 할당하는 네트워크 min-redirector 드라이버에서만 사용됩니다.

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 구조의 다른 여러 멤버를 설정합니다.

  • 적절한 NodeTypeCode, NodeByteSize, SerialNumber, RxDeviceObject를 설정하고 ReferenceCount 를 1로 초기화합니다.
  • SyncEvent 초기화
  • 연결된 ScavengerEntry 초기화
  • BlockedOperations의 목록 항목을 초기화합니다.
  • Irp에 따라 RX_CONTEXT 멤버를 설정합니다. 여기에는 CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFcb, NonPagedFcb, pFobx, pRelevantSrvOpenFobxSerialNumber 멤버가 포함됩니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 rxcontx.h(Rxprocs.h rxcontx.h 포함)
IRQL <= APC_LEVEL

추가 정보

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock