RX_CONTEXT 구조체(rxcontx.h)

RX_CONTEXT 구조체는 RDBSS, 네트워크 미니 리디렉션기 및 파일 시스템에서 사용할 IRP를 캡슐화합니다. RX_CONTEXT 구조는 네트워크 미니 리디렉터에서 처리하는 동안 IRP를 설명하고 IRP가 완료되면 전역 리소스를 해제할 수 있는 상태 정보를 포함합니다.

구문

typedef struct _RX_CONTEXT {
  NODE_TYPE_CODE         NodeTypeCode;
  NODE_BYTE_SIZE         NodeByteSize;
  __volatile ULONG       ReferenceCount;
  LIST_ENTRY             ContextListEntry;
  UCHAR                  MajorFunction;
  UCHAR                  MinorFunction;
  BOOLEAN                PendingReturned;
  BOOLEAN                PostRequest;
  PDEVICE_OBJECT         RealDevice;
  PIRP                   CurrentIrp;
  PIO_STACK_LOCATION     CurrentIrpSp;
  PMRX_FCB               pFcb;
  PMRX_FOBX              pFobx;
  PMRX_SRV_OPEN          pRelevantSrvOpen;
  PNON_PAGED_FCB         NonPagedFcb;
  PRDBSS_DEVICE_OBJECT   RxDeviceObject;
  PETHREAD               OriginalThread;
  PETHREAD               LastExecutionThread;
  __volatile PVOID       LockManagerContext;
  PVOID                  RdbssDbgExtension;
  RX_SCAVENGER_ENTRY     ScavengerEntry;
  ULONG                  SerialNumber;
  ULONG                  FobxSerialNumber;
  ULONG                  Flags;
  BOOLEAN                FcbResourceAcquired;
  BOOLEAN                FcbPagingIoResourceAcquired;
  UCHAR                  MustSucceedDescriptorNumber;
  union {
    struct {
      union {
        NTSTATUS StoredStatus;
        PVOID    StoredStatusAlignment;
      };
      ULONG_PTR InformationToReturn;
    };
    IO_STATUS_BLOCK IoStatusBlock;
  };
  union {
    ULONGLONG ForceLonglongAligmentDummyField;
    PVOID     MRxContext[MRX_CONTEXT_FIELD_COUNT];
  };
  PVOID                  WriteOnlyOpenRetryContext;
  PMRX_CALLDOWN          MRxCancelRoutine;
  PRX_DISPATCH           ResumeRoutine;
  RX_WORK_QUEUE_ITEM     WorkQueueItem;
  LIST_ENTRY             OverflowListEntry;
  KEVENT                 SyncEvent;
  LIST_ENTRY             BlockedOperations;
  PFAST_MUTEX            BlockedOpsMutex;
  LIST_ENTRY             RxContextSerializationQLinks;
  union {
    struct {
      union {
        FS_INFORMATION_CLASS   FsInformationClass;
        FILE_INFORMATION_CLASS FileInformationClass;
      };
      PVOID   Buffer;
      union {
        LONG Length;
        LONG LengthRemaining;
      };
      BOOLEAN ReplaceIfExists;
      BOOLEAN AdvanceOnly;
    } Info;
    struct {
      UNICODE_STRING       SuppliedPathName;
      NET_ROOT_TYPE        NetRootType;
      PIO_SECURITY_CONTEXT pSecurityContext;
    } PrefixClaim;
  };
  union {
    struct {
      NT_CREATE_PARAMETERS NtCreateParameters;
      ULONG                ReturnedCreateInformation;
      PWCH                 CanonicalNameBuffer;
      PRX_PREFIX_ENTRY     NetNamePrefixEntry;
      PMRX_SRV_CALL        pSrvCall;
      PMRX_NET_ROOT        pNetRoot;
      PMRX_V_NET_ROOT      pVNetRoot;
      PVOID                EaBuffer;
      ULONG                EaLength;
      ULONG                SdLength;
      ULONG                PipeType;
      ULONG                PipeReadMode;
      ULONG                PipeCompletionMode;
      USHORT               Flags;
      NET_ROOT_TYPE        Type;
      UCHAR                RdrFlags;
      BOOLEAN              FcbAcquired;
      BOOLEAN              TryForScavengingOnSharingViolation;
      BOOLEAN              ScavengingAlreadyTried;
      BOOLEAN              ThisIsATreeConnectOpen;
      BOOLEAN              TreeConnectOpenDeferred;
      UNICODE_STRING       TransportName;
      UNICODE_STRING       UserName;
      UNICODE_STRING       Password;
      UNICODE_STRING       UserDomainName;
    } Create;
    struct {
      ULONG   FileIndex;
      BOOLEAN RestartScan;
      BOOLEAN ReturnSingleEntry;
      BOOLEAN IndexSpecified;
      BOOLEAN InitialQuery;
    } QueryDirectory;
    struct {
      PMRX_V_NET_ROOT pVNetRoot;
    } NotifyChangeDirectory;
    struct {
      PUCHAR  UserEaList;
      ULONG   UserEaListLength;
      ULONG   UserEaIndex;
      BOOLEAN RestartScan;
      BOOLEAN ReturnSingleEntry;
      BOOLEAN IndexSpecified;
    } QueryEa;
    struct {
      SECURITY_INFORMATION SecurityInformation;
      ULONG                Length;
    } QuerySecurity;
    struct {
      SECURITY_INFORMATION SecurityInformation;
      PSECURITY_DESCRIPTOR SecurityDescriptor;
    } SetSecurity;
    struct {
      ULONG                       Length;
      PSID                        StartSid;
      PFILE_GET_QUOTA_INFORMATION SidList;
      ULONG                       SidListLength;
      BOOLEAN                     RestartScan;
      BOOLEAN                     ReturnSingleEntry;
      BOOLEAN                     IndexSpecified;
    } QueryQuota;
    struct {
      ULONG Length;
    } SetQuota;
    struct {
      PV_NET_ROOT VNetRoot;
      PSRV_CALL   SrvCall;
      PNET_ROOT   NetRoot;
    } DosVolumeFunction;
    struct {
      ULONG         FlagsForLowIo;
      LOWIO_CONTEXT LowIoContext;
    };
  };
  PWCH                   AlsoCanonicalNameBuffer;
  PUNICODE_STRING        LoudCompletionString;
  __volatile LONG        AcquireReleaseFcbTrackerX;
  __volatile ULONG       TrackerHistoryPointer;
  RX_FCBTRACKER_CALLINFO TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE];
  ULONG                  ShadowCritOwner;
} RX_CONTEXT, *PRX_CONTEXT;

멤버

NodeTypeCode

RX_CONTEXT 구조에 사용되는 고유 노드 형식입니다. RDBSS에서 사용하는 모든 주요 구조 형식(예: RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB 및 FOBX)에는 디버깅에 사용할 수 있는 nodetype.h 포함 파일에 정의된 고유한 2바이트 노드 형식 코드가 있습니다. RDBSS는 RxInitializeContext 루틴에서 RX_CONTEXT 초기화될 때 이 멤버를 RDBSS_NTC_RX_CONTEXT 설정합니다. 네트워크 미니 리렉터 드라이버가 다른 메서드를 사용하여 RX_CONTEXT 구조를 초기화하는 경우 이 멤버를 설정해야 합니다.

RDBSS는 RDBSS에서 사용하는 모든 구조체에 대한 표준 헤더의 일부로 이 멤버를 정의합니다.

NodeByteSize

이 구조체의 크기(바이트)입니다. RDBSS는 RxInitializeContext 루틴에서 RX_CONTEXT 초기화될 때 이 멤버를 sizeof(RX_CONTEXT)로 설정합니다. 네트워크 미니 리렉터 드라이버가 다른 메서드를 사용하여 RX_CONTEXT 구조를 초기화하는 경우 이 멤버를 설정해야 합니다.

RDBSS는 RDBSS에서 사용하는 모든 구조체에 대한 표준 헤더의 일부로 이 멤버를 정의합니다.

ReferenceCount

이 구조체가 할당된 후의 참조 수입니다. RDBSS는 RxInitializeContext 루틴에서 RX_CONTEXT 할당되고 초기화될 때 이 멤버를 1로 설정합니다. 네트워크 미니 리렉터 드라이버가 다른 메서드를 사용하여 RX_CONTEXT 구조를 초기화하는 경우 이 멤버를 설정해야 합니다.

RDBSS는 RDBSS에서 사용하는 모든 구조체에 대한 표준 헤더의 일부로 이 멤버를 정의합니다.

ContextListEntry

이 RX_CONTEXT 활성 RX_CONTEXTS 목록에 연결할 목록 항목입니다.

MajorFunction

이 RX_CONTEXT 캡슐화된 IRP의 주요 함수입니다.

MinorFunction

이 RX_CONTEXT 캡슐화된 IRP의 부 함수입니다.

PendingReturned

TRUE로 설정하면 RDBSS 또는 드라이버가 보류 중인 IRP를 표시하도록 지정합니다. 각 IoCompletion 루틴은 이 플래그의 값을 검사 합니다. 플래그가 TRUE이고 IoCompletion 루틴이 STATUS_MORE_PROCESSING_REQUIRED 반환하지 않는 경우 루틴은 IoMarkIrpPending을 호출하여 보류 중인 상태 디바이스 스택 위의 드라이버에 전파해야 합니다. 이 멤버는 IRP의 동일한 필드와 비슷합니다.

RDBSS는 네트워크 미니 리디렉션기 드라이버를 호출하기 전에 항상 이 멤버를 TRUE로 설정합니다.

PostRequest

TRUE로 설정하면 연결된 요청을 RDBSS 작업자 스레드에 게시할지를 나타냅니다. 네트워크 미니 리디렉션기는 이 멤버를 TRUE로 설정하여 이 요청을 FSP(파일 시스템 프로세스)에 게시하려고 함을 나타낼 수 있습니다.

RealDevice

대상 네트워크 미니 리렉터 드라이버에 대한 디바이스 개체에 대한 포인터입니다. RDBSS는 RxInitializeContext 루틴에 RX_CONTEXT 할당된 경우 네트워크 미니 리디렉터 드라이버의 디바이스 개체로 이 멤버를 설정합니다. 이 멤버는 IRP 스택의 FileObject-DeviceObject> 멤버에서 복사됩니다. 네트워크 미니 리디렉터에 대한 디바이스 개체도 RxDeviceObject 구조체 멤버에 저장됩니다.

RealDevice 멤버는 현재 RDBSS에서 사용되지 않지만 네트워크 미니 리디렉터에서 사용할 수 있습니다.

CurrentIrp

원래 IRP에 대한 포인터입니다. 이 멤버는 네트워크 미니 리렉터 드라이버에서 사용하면 안 됩니다.

CurrentIrpSp

IRP 스택 위치에 대한 포인터입니다.

pFcb

이 IRP에 대한 연결된 FCB(파일 제어 블록)에 대한 포인터입니다.

pFobx

이 IRP에 대한 연결된 파일 개체 확장명(FOBX)에 대한 포인터입니다.

pRelevantSrvOpen

이 IRP에 대한 연결된 서버 open(SRV_OPEN)에 대한 포인터입니다.

NonPagedFcb

이 IRP에 대한 연결된 FCB(비페이징 파일 제어 블록)에 대한 포인터입니다.

RxDeviceObject

작업자 큐 알고리즘에 필요한 대상 네트워크 미니 리디렉션기 드라이버의 RDBSS_DEVICE_OBJECT 대한 포인터입니다. RDBSS는 RxInitializeContext 루틴에서 RX_CONTEXT 초기화될 때 네트워크 미니 리디렉션자에 대한 RDBSS_DEVICE_OBJECT 이 멤버를 설정합니다. RxDeviceObject 구조에는 RX_CONTEXT RealDevice 멤버와 동일한 네트워크 미니 리디렉터 드라이버의 디바이스 개체를 포함하는 DeviceObject 멤버가 포함됩니다.

OriginalThread

요청이 시작된 원래 스레드에 대한 포인터입니다.

LastExecutionThread

스레드가 파일 시스템 프로세스에 게시된 경우 RX_CONTEXT 연결된 일부 처리가 수행된 마지막 스레드에 대한 포인터입니다.

LockManagerContext

잠금 관리자 컨텍스트에 대한 포인터입니다. 이 멤버는 내부용으로 예약되어 있습니다.

RdbssDbgExtension

정보를 디버깅하기 위해 RDBSS에 지정된 컨텍스트에 대한 포인터입니다. 이 멤버는 내부용으로 예약되어 있습니다.

ScavengerEntry

청소할 항목 목록에 대한 포인터입니다. 이 멤버는 내부용으로 예약되어 있습니다.

SerialNumber

이 RX_CONTEXT 구조체의 일련 번호입니다. RDBSS에서 초기화된 모든 구조체에는 구조가 처음 초기화될 때 할당된 일련 번호가 있습니다. 이 일련 번호는 값이 설정되기 전에 1씩 증가하는 숫자입니다. RDBSS는 RxInitializeContext 루틴에서 RX_CONTEXT 초기화될 때 이 멤버를 설정합니다. RDBSS

FobxSerialNumber

연결된 FOBX 구조체의 일련 번호입니다. RDBSS에서 초기화된 모든 구조체에는 구조가 처음 초기화될 때 할당된 일련 번호가 있습니다. 네트워크 미니 리 디렉터에서 이 멤버를 사용하여 여러 호출이 동일한 더 큰 작업의 일부이므로 캐시할 수 있는지 확인할 수 있습니다.

Flags

이 RX_CONTEXT 구조체에 대한 플래그의 비트 마스크입니다.

FcbResourceAcquired

TRUE로 설정된 경우 이 멤버는 이 작업에 대해 FCB 리소스를 획득하도록 지정합니다. FCB 리소스는 FCB의 작업과 관련된 잠금 메커니즘 중 하나입니다.

FcbPagingIoResourceAcquired

TRUE로 설정된 경우 이 멤버는 이 작업에 대해 FCB 페이징 I/O 리소스를 획득하도록 지정합니다. FCB 페이징 I/O 리소스는 FCB의 페이징 I/O 작업과 관련된 잠금 메커니즘 중 하나입니다.

MustSucceedDescriptorNumber

멤버는 처음에 RxCreateRxContext 루틴에서 0으로 설정됩니다. 이 멤버는 RDBSS에서 사용되지 않지만 네트워크 미니 리디렉션기에서 사용할 수 있습니다.

StoredStatus

StoredStatusAlignment

InformationToReturn

IoStatusBlock

네트워크 미니 리다이렉터에서 상태 정보를 반환하는 데 사용하는 I/O 상태 블록입니다. IoStatusBlock 멤버는 상태 정보를 반환하는 데 사용되는 명명되지 않은 공용 구조체의 구성원입니다.

ForceLonglongAligmentDummyField

MRxContext[MRX_CONTEXT_FIELD_COUNT] 멤버에 적절한 맞춤을 적용하는 데 사용되는 명명되지 않은 공용 구조체의 멤버입니다.

MRxContext[MRX_CONTEXT_FIELD_COUNT]

WriteOnlyOpenRetryContext

네트워크 미니 리디렉션자에 대한 일부 상태를 저장하는 데 사용할 수 있는 포인터입니다. 이 멤버는 RDBSS에서 사용되지 않지만 네트워크 미니 리디렉터 드라이버에서 파일을 쓰기 전용 핸들에 캐시했음을 나타내는 데 사용할 수 있습니다.

MRxCancelRoutine

네트워크 미니 리렉터 드라이버에서 설정할 수 있는 취소 루틴에 대한 포인터입니다.

ResumeRoutine

이 멤버는 내부용으로 예약되어 있습니다.

WorkQueueItem

RX_CONTEXT 처리하는 동안 네트워크 미니 리다이렉터 드라이버에서 사용할 수 있는 작업 큐 항목에 대한 포인터입니다.

OverflowListEntry

완료 시 해제할 작업의 목록 헤드에 대한 포인터입니다. 이 멤버는 내부용으로 예약되어 있습니다.

SyncEvent

네트워크 미니 리렉터 드라이버가 RX_CONTEXT 처리하는 동안 대기하는 데 사용할 수 있는 커널 이벤트에 대한 포인터입니다.

BlockedOperations

완료 시 해제할 차단된 작업의 목록 헤드에 대한 포인터입니다. 이 멤버는 내부용으로 예약되어 있습니다.

BlockedOpsMutex

차단된 작업의 serialization을 제어하는 뮤텍스에 대한 포인터입니다. 이 멤버는 내부용으로 예약되어 있습니다.

RxContextSerializationQLinks

파일 개체별로 파이프 작업을 직렬화하는 데 사용되는 목록 항목에 대한 포인터입니다. 이 멤버는 내부용으로 예약되어 있습니다.

Info

MRxQueryDirectory, MRxQueryFileInfo, MRxQueryVolumeInfo, MRxSetFileInfo, MRxSetFileInfoAtCleanupMRxSetVolumeInfo 루틴에 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. RDBSS는 정보 구조 멤버의 정보를 네트워크 미니 리디렉션자에 전달하고 네트워크 미니 리디렉션기는 정보 구조 멤버의 RDBSS에 정보를 반환합니다.

Info.FsInformationClass

RDBSS에서 네트워크 미니 리디렉터 드라이버에 요청되는 FS_INFORMATION_CLASS 유형을 전달하는 데 사용하는 명명되지 않은 공용 구조체의 멤버입니다. RDBSS는 **MrxQueryVolumeInfo **및 MrxSetVolumeInfo를 호출할 때 FsInformationClass 멤버에 정보를 전달합니다.

Info.FileInformationClass

RDBSS에서 네트워크 미니 리디렉터 드라이버로 전송된 FILE_INFORMATION_CLASS 요청의 유형을 나타내는 데 사용하는 명명되지 않은 공용 구조체의 멤버입니다. RDBSS는 MrxQueryDirectory, MrxQueryFileInfo 및 MrxSetFileInfo를 호출할 때 FileInformationClass 멤버의 정보를 전달합니다.

Info.Buffer

RDBSS에서 네트워크 미니 리디렉션기 드라이버로 데이터를 전달하고 RDBSS를 통해 네트워크 미니 리디렉션기 드라이버에서 응답을 받는 데 사용되는 버퍼입니다. 버퍼 멤버는 MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanupMrxSetVolumeInfo 루틴에 사용됩니다.

Info.Length

RDBSS에서 네트워크 미니 리디렉터 드라이버로 버퍼 멤버의 길이를 전달하는 데 사용되는 명명되지 않은 공용 구조체의 멤버입니다. Length 멤버는 MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanupMrxSetVolumeInfo 루틴에 사용됩니다.

Info.LengthRemaining

네트워크 미니 리디렉터 드라이버에서 RDBSS로 버퍼 멤버에 반환되는 정보의 길이를 전달하는 데 사용되는 명명되지 않은 공용 구조체의 멤버입니다. LengthRemaining 멤버는 MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanupMrxSetVolumeInfo 루틴에 사용됩니다.

Info.ReplaceIfExists

이름 바꾸기 작업 중에 기존 파일을 교체해야 하는지 여부를 나타내는 부울 값입니다. ReplaceIfExists 멤버는 MrxSetFileInfo 루틴에 사용됩니다.

Info.AdvanceOnly

이 멤버는 내부용으로 예약되어 있습니다.

PrefixClaim

MUP(다중 UNC 공급자)에서 보낸 접두사 확인 요청에 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 접두사 클레임은 IOCTL_REDIR_QUERY_PATH 또는IOCTL_REDIR_QUERY_PATH_EX 대한 MUP에서 RDBSS로의 IRP_MJ_DEVICE_CONTROL 요청에서 발생합니다. RDBSS는 PrefixClaim 구조의 정보를 네트워크 미니 리디렉션자에 전달하고 네트워크 미니 리디렉션자는 PrefixClaim 구조의 RDBSS에 정보를 반환합니다.

PrefixClaim.SuppliedPathName

접두사 확인을 수행할 UNC 경로를 지정하는 NULL이 아닌 종료 유니코드 문자열입니다.

PrefixClaim.NetRootType

요청된 NET_ROOT 형식입니다. 이 멤버는 현재 사용되지 않습니다. RDBSS는 SuppliedPathName 멤버의 NET_ROOT 형식을 추론합니다.

PrefixClaim.pSecurityContext

MUP의 요청에서 전달된 보안 컨텍스트에 대한 포인터입니다.

이 멤버는 현재 사용되지 않습니다. 보안 컨텍스트는 이 멤버가 아닌 RX_CONTEXT Create.NtCreateParameters.SecurityContext 멤버에 전달됩니다.

Create

IRP_MJ_CREATE 요청을 처리하는 데 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 멤버는 MRxCreate 루틴에 대한 호출을 초래하는 파일 열기 요청을 처리하는 데 사용됩니다. 이 멤버는 접두사 확인 요청에도 사용됩니다. RDBSS는 구조체 멤버 만들기 의 정보를 네트워크 미니 리디렉션자에 전달하고 네트워크 미니 리디렉션기는 구조체 만들기 멤버의 RDBSS에 정보를 반환합니다.

Create.NtCreateParameters

사용자 모드 NtCreatefile 루틴에 전달된 만들기 매개 변수입니다. RDBSS는 IRP의 Parameters.Create 멤버를 기반으로 NtCreateParameters 구조체의 멤버를 설정합니다.

Create.ReturnedCreateInformation

MRxCreate 호출이 완료될 때 네트워크 미니 리디렉터에서 설정한 값입니다.

Create.CanonicalNameBuffer

정식 이름이 사용 가능한 버퍼보다 큰 경우 열 실제 파일의 이름을 나타내는 유니코드 문자열에 대한 포인터입니다.

Create.NetNamePrefixEntry

NetName 테이블 접두사 항목에 대한 포인터입니다. 이 멤버는 내부용으로 예약되어 있습니다.

Create.pSrvCall

연결된 SRV_CALL 구조체에 대한 포인터입니다.

Create.pNetRoot

연결된 NET_ROOT 구조체에 대한 포인터입니다.

Create.pVNetRoot

연결된 V_NET_ROOT 구조체에 대한 포인터입니다.

Create.EaBuffer

확장 특성 버퍼에 대한 포인터입니다. 이 멤버는 선택 사항입니다.

Create.EaLength

확장 특성 버퍼인 EaBuffer의 길이입니다.

Create.SdLength

보안 설명자의 길이입니다. RDBSS는 IRP의 Parameters.Create.SecurityContext 멤버 값에 따라 이 값을 설정합니다. SdLength 멤버가 0이 아닌 경우 보안 설명자는 Info.Buffer 멤버에서 네트워크 미니 리디렉터에 전달됩니다.

Create.PipeType

파이프의 형식입니다. 이 멤버는 내부용으로 예약되어 있습니다.

Create.PipeReadMode

파이프의 읽기 모드입니다. 이 멤버는 내부용으로 예약되어 있습니다.

Create.PipeCompletionMode

파이프의 완료 모드입니다. 이 멤버는 내부용으로 예약되어 있습니다.

Create.Flags

만들기 플래그

Create.Type

연결된 NET_ROOT 구조체의 형식입니다.

Create.RdrFlags

Create.FcbAcquired

이 멤버는 내부용으로 예약되어 있습니다.

Create.TryForScavengingOnSharingViolation

이 멤버는 내부용으로 예약되어 있습니다.

Create.ScavengingAlreadyTried

이 멤버는 내부용으로 예약되어 있습니다.

Create.ThisIsATreeConnectOpen

이 호출이 IrpSp-Parameters.Create.Options> 멤버에 설정된 FILE_CREATE_TREE_CONNECTION 옵션을 사용하여 트리 연결 열기 요청인지 여부를 나타내는 부울 값입니다.

Create.TreeConnectOpenDeferred

네트워크 미니 리디렉션자가 트리 연결 열기 요청을 연기하도록 선택할 수 있음을 나타내는 부울 값입니다.

Create.TransportName

전송 이름을 나타내는 유니코드 문자열입니다. 이 멤버는 트리 연결 열기 매개 변수에서 설정됩니다.

Create.UserName

요청을 담당하는 사용자 이름을 나타내는 유니코드 문자열입니다. 이 멤버는 트리 연결 열기 매개 변수에서 설정됩니다.

Create.Password

인증 및 권한 부여에 사용되는 이 UserName 의 암호를 포함하는 유니코드 문자열입니다. 이 멤버는 트리 연결 열기 매개 변수에서 설정됩니다.

Create.UserDomainName

UserName의 도메인 이름을 포함하는 유니코드 문자열입니다.

QueryDirectory

IRP_MJ_DIRECTORY_CONTROL 요청을 처리하는 데 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 멤버는 MrxQueryDirectory 루틴을 호출하는 쿼리 디렉터리 요청을 처리하는 데 사용됩니다. RDBSS는 QueryDirectory 구조체 멤버의 정보를 네트워크 미니 리디렉터에 전달합니다.

QueryDirectory.FileIndex

IndexSpecified 멤버가 TRUE로 설정된 경우 디렉터리 검사를 시작할 항목의 인덱스입니다. 이 매개 변수는 IrpSp-Parameters.QueryDirectory.FileIndex> 멤버로 설정됩니다.

QueryDirectory.RestartScan

TRUE로 설정된 경우 부울 값은 디렉터리의 첫 번째 항목에서 검사가 시작됨을 나타냅니다. 이 값을 FALSE로 설정하면 이전 호출에서 검사가 다시 시작됩니다. 이 매개 변수는 처음 호출할 때 TRUE로 설정해야 합니다. IrpSp-Flags>에 SL_RESTART_SCAN 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

QueryDirectory.ReturnSingleEntry

TRUE로 설정된 부울 값은 단일 항목만 반환되어야 했음을 나타냅니다. 이 매개 변수가 TRUE이면 MrxQueryDirectory 는 발견된 첫 번째 항목만 반환해야 합니다. IrpSp-Flags>에 SL_RETURN_SINGLE_ENTRY 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

QueryDirectory.IndexSpecified

TRUE로 설정된 경우 부울 값은 FileIndex 멤버가 인덱스를 제공하는 디렉터리의 항목에서 검사를 시작하도록 나타냅니다. IrpSp-Flags>에 SL_INDEX_SPECIFIED 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

QueryDirectory.InitialQuery

쿼리가 야생 카드 쿼리(".")가 아닌 경우 TRUE로 설정된 부울 값입니다. 연결된 FOBX의 UnicodeQueryTemplate.Buffer 멤버가 NULL이고 FOBX의 Flags 멤버에 FOBX_FLAG_MATCH_ALL 비트가 없는 경우 이 멤버는 TRUE로 설정됩니다. 예를 들어 야생 카드 쿼리(".")의 경우 RDBSS는 연결된 FOBX의 UnicodeQueryTemplate.Buffer 멤버를 전달된 야생 카드 쿼리로 설정합니다.

NotifyChangeDirectory

IRP_MN_NOTIFY_CHANGE_DIRECTORY 부 함수를 사용하여 IRP_MJ_DIRECTORY_CONTROL 요청을 처리하는 데 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 멤버는 MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] 루틴을 호출하는 디렉터리 변경 요청을 처리하는 데 사용됩니다. RDBSS는 NotifyChangeDirectory 구조체 멤버 및 pLowIoContext-ParamsFor.NotifyChangeDirectory> 구조체의 정보를 네트워크 미니 리디렉터에 전달합니다.

NotifyChangeDirectory.pVNetRoot

디렉터리에 연결된 V_NET_ROOT 구조체에 대한 포인터입니다. 이 매개 변수는 노드 유형에 따라 IrpSp-FileObject-FsContext>> 멤버 또는 IrpSp-FileObject-FsContext2>> 멤버로 설정됩니다.

QueryEa

IRP_MJ_QUERY_EA 요청을 처리하는 데 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 멤버는 MRxQueryEaInfo 루틴에 대한 호출을 초래하는 확장 특성 쿼리 요청을 처리하는 데 사용됩니다. RDBSS는 QueryEa 구조체 멤버의 정보를 네트워크 미니 리디렉션자에 전달합니다.

QueryEa.UserEaList

쿼리할 확장 특성을 지정하는 FILE_GET_EA_INFORMATION 구조를 포함하는 호출자 제공 입력 버퍼에 대한 포인터입니다. 이 매개 변수는 IrpSp-Parameters.QueryEa.EaList>로 설정됩니다.

QueryEa.UserEaListLength

UserEaList 멤버가 가리키는 버퍼의 길이(바이트)입니다. 이 매개 변수는 IrpSp-Parameters.QueryEa.EaListLength>로 설정됩니다.

QueryEa.UserEaIndex

확장 특성 목록 검사를 시작할 항목의 인덱스입니다. IndexSpecified 멤버가 TRUE로 설정되지 않았거나 QueryEaList 멤버가 없음 목록을 가리키는 경우 이 매개 변수를 무시해야 합니다. 이 매개 변수는 IrpSp-Parameters.QueryEa.EaIndex>로 설정됩니다.

QueryEa.RestartScan

TRUE로 설정된 경우 부울 값은 쿼리가 첫 번째 확장 특성 항목에서 시작됨을 나타냅니다. 이 값을 FALSE로 설정하면 이전 호출에서 검사가 다시 시작됩니다. 이 매개 변수는 처음 호출할 때 TRUE로 설정해야 합니다. IrpSp-Flags>에 SL_RESTART_SCAN 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

QueryEa.ReturnSingleEntry

TRUE로 설정된 경우 부울 값은 단일 항목만 반환되어야 했음을 나타냅니다. 이 매개 변수가 TRUE이면 MrxQueryEaInfo는 발견된 첫 번째 항목만 반환해야 합니다. IrpSp-Flags>에 SL_RETURN_SINGLE_ENTRY 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

QueryEa.IndexSpecified

TRUE로 설정된 경우 부울 값은 UserEaIndex 멤버가 인덱스를 제공하는 확장 특성의 항목에서 검사를 시작하도록 나타냅니다. IrpSp-Flags>에 SL_INDEX_SPECIFIED 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

QuerySecurity

IRP_MJ_QUERY_SECURITY 요청을 처리하는 데 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 멤버는 MRxQuerySdInfo 루틴에 대한 호출을 초래하는 쿼리 보안 요청을 처리하는 데 사용됩니다. RDBSS는 QuerySecurity 구조체 멤버의 정보를 네트워크 미니 리디렉션자에 전달합니다.

QuerySecurity.SecurityInformation

쿼리할 작업을 지정하는 SECURITY_INFORMATION 구조를 포함하는 호출자 제공 입력 버퍼에 대한 포인터입니다. 이 매개 변수는 IrpSp-Parameters.QuerySecurity.SecurityInformation>으로 설정됩니다.

QuerySecurity.Length

SecurityInformation 멤버가 가리키는 버퍼의 길이(바이트)입니다. 이 매개 변수는 IrpSp-Parameters.QuerySecurity.Length>로 설정됩니다.

SetSecurity

IRP_MJ_SET_SECURITY 요청을 처리하는 데 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 멤버는 MRxSetSdInfo 루틴을 호출하는 쿼리 보안 요청을 처리하는 데 사용됩니다. RDBSS는 SetSecurity 구조체 멤버의 정보를 네트워크 미니 리다이렉터에 전달합니다.

SetSecurity.SecurityInformation

보안 설명자에서 설정할 보안 정보를 지정하는 SECURITY_INFORMATION 구조를 포함하는 호출자 제공 입력 버퍼에 대한 포인터입니다. 이 매개 변수는 IrpSp-Parameters.SetSecurity.SecurityInformation>으로 설정됩니다.

SetSecurity.SecurityDescriptor

개체에 할당할 보안 정보의 값을 포함하는 SECURITY_DESCRIPTOR 구조체에 대한 포인터입니다. 이 매개 변수는 IrpSp-Parameters.SetSecurity.SecurityDescriptor>로 설정됩니다.

QueryQuota

IRP_MJ_QUERY_QUOTA 요청을 처리하는 데 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 멤버는 MRxQueryQuotaInfo 루틴을 호출하는 쿼리 보안 요청을 처리하는 데 사용됩니다. RDBSS는 QueryQuota 구조체 멤버의 정보를 네트워크 미니 리다이렉터에 전달합니다.

QueryQuota.Length

StartSid 멤버가 가리키는 버퍼의 길이(바이트)입니다. 이 매개 변수는 IrpSp-Parameters.QueryQuota.Length>로 설정됩니다.

QueryQuota.StartSid

반환된 정보가 첫 번째 항목 이외의 항목으로 시작됨을 나타내는 SID에 대한 선택적 포인터입니다. SidList 멤버가 지정된 경우 이 매개 변수는 무시됩니다. 이 매개 변수는 IrpSp-Parameters.QueryQuota.StartSid>로 설정됩니다.

QueryQuota.SidList

할당량 정보를 반환할 SID 목록에 대한 선택적 포인터입니다. 목록의 각 항목은 FILE_GET_QUOTA_INFORMATION 구조입니다. 이 매개 변수는 IrpSp-Parameters.QueryQuota.SidList>로 설정됩니다.

QueryQuota.SidListLength

SidList 멤버에 있는 SID 목록의 길이(바이트)입니다(지정된 경우). 이 매개 변수는 IrpSp-Parameters.QueryQuota.SidListLength>로 설정됩니다.

QueryQuota.RestartScan

TRUE로 설정된 경우 부울 값은 쿼리가 첫 번째 항목에서 시작됨을 나타냅니다. 이 값을 FALSE로 설정하면 이전 호출에서 검사가 다시 시작됩니다. 이 매개 변수는 처음 호출할 때 TRUE로 설정해야 합니다. IrpSp-Flags>에 SL_RESTART_SCAN 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

QueryQuota.ReturnSingleEntry

TRUE로 설정된 경우 부울 값은 단일 항목만 반환되어야 했음을 나타냅니다. 이 매개 변수가 TRUE이면 MrxQueryQuotaInfo는 발견된 첫 번째 항목만 반환해야 합니다. IrpSp-Flags>에 SL_RETURN_SINGLE_ENTRY 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

QueryQuota.IndexSpecified

TRUE로 설정된 경우 부울 값은 StartSid 멤버가 인덱스를 제공하는 목록의 항목에서 검사를 시작했음을 나타냅니다. IrpSp-Flags>에 SL_INDEX_SPECIFIED 비트가 있는 경우 이 매개 변수는 TRUE로 설정됩니다.

SetQuota

IRP_MJ_SET_QUOTA 요청을 처리하는 데 사용되는 명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 구조체는 현재 RDBSS에서 사용되지 않습니다.

SetQuota.Length

SetQuota 구조체의 사용되지 않는 멤버입니다.

DosVolumeFunction

명명되지 않은 공용 구조체의 구조체 멤버입니다. 이 구조체는 현재 RDBSS에서 사용되지 않습니다.

DosVolumeFunction.VNetRoot

DosVolumeFunction 구조체의 사용되지 않는 멤버입니다.

DosVolumeFunction.SrvCall

DosVolumeFunction 구조체의 사용되지 않는 멤버입니다.

DosVolumeFunction.NetRoot

DosVolumeFunction 구조체의 사용되지 않는 멤버입니다.

FlagsForLowIo

LowIoContext

AlsoCanonicalNameBuffer

LoudCompletionString

RX_CONTEXT 구조체의 사용되지 않는 멤버입니다.

AcquireReleaseFcbTrackerX

TrackerHistoryPointer

TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]

ShadowCritOwner

StoredStatus

낮은 I/O 작업을 위해 네트워크 미니 리디렉터 드라이버에서 상태 정보를 반환하는 데 사용되는 명명되지 않은 공용 구조체의 멤버입니다. RDBSS는 또한 RDBSS에서 파일 쿼리 작업을 이해하지 못할 때 MRxQueryFileInfo 루틴에서 반환된 상태 기반으로 이 값을 설정합니다.

StoredStatusAlignment

StoredStatus 멤버에 적절한 맞춤을 강제 적용하는 데 사용되는 명명되지 않은 공용 구조체의 멤버입니다.

InformationToReturn

일부 낮은 I/O(읽기, 쓰기, FSCTL 등) 및 MrxQueryXXX 작업에 대해 네트워크 미니 리디렉터 드라이버에서 상태 정보를 반환하는 데 사용되는 명명되지 않은 공용 구조체의 멤버입니다.

RX_CONTEXT 구조체에 사용되는 고유 노드 형식입니다. RDBSS에서 사용하는 모든 주요 구조 형식(예: RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB 및 FOBX)에는 디버깅에 사용할 수 있는 nodetype.h 포함 파일에 정의된 고유한 2바이트 노드 형식 코드가 있습니다. RDBSS는 RxInitializeContext 루틴에서 RX_CONTEXT 초기화될 때 이 멤버를 RDBSS_NTC_RX_CONTEXT 설정합니다. 네트워크 미니 리렉터 드라이버가 다른 메서드를 사용하여 RX_CONTEXT 구조를 초기화하는 경우 이 멤버를 설정해야 합니다.

RDBSS는 RDBSS에서 사용하는 모든 구조체에 대한 표준 헤더의 일부로 이 멤버를 정의합니다.

FlagsForLowIo

RDBSS에서 설정하고 네트워크 미니 리다이렉터로 전송된 낮은 I/O 작업에 전달된 옵션 집합입니다. FlagsForLowIo 는 네트워크 미니 리디렉터에 대한 낮은 I/O 요청에 사용되는 명명되지 않은 구조체의 멤버입니다.

LowIoContext

네트워크 미니 리다이렉터에 전달된 LOWIO_CONTEXT 구조체에 대한 포인터입니다. LowIoContext 는 네트워크 미니 리디렉터로 전송되는 낮은 I/O 요청에 사용되는 명명되지 않은 구조체의 멤버입니다.

설명

RX_CONTEXT 구조는 RDBSS 및 네트워크 미니 리다이렉터에서 IRP(I/O 요청 패킷)를 관리하는 데 사용하는 기본 데이터 구조 중 하나입니다. RX_CONTEXT 데이터 구조는 RDBSS, 네트워크 미니 리다이렉터 및 파일 시스템에서 사용할 IRP를 캡슐화합니다. RX_CONTEXT 구조에는 단일 IRP에 대한 포인터와 IRP를 처리하는 데 필요한 모든 컨텍스트가 포함됩니다.

RX_CONTEXT 구조는 WDK(창 드라이버 키트) 또는 IFS 키트 헤더 파일 및 네트워크 미니 리디렉터 드라이버 개발에 사용되는 기타 리소스에서 IRP 컨텍스트 또는 RxContext라고도 합니다.

RX_CONTEXT 다양한 네트워크 미니 리다이렉터에서 제공하는 추가 정보가 연결되는 데이터 구조입니다. RX_CONTEXT 각 네트워크 미니 리다이렉터에 대해 미리 지정된 양으로 각 RX_CONTEXT 구조체의 크기를 초과 할당하기 위한 필드가 포함되어 있습니다. 그러면 미니 리렉터에서 사용하도록 예약됩니다. 이 방법은 미리 지정된 영역을 할당하는 것으로 구성되며, 이는 각 RX_CONTEXT 일부로 모든 네트워크 미니 리다이렉터에 대해 동일합니다. 다양한 네트워크 미니 리디렉터에서 원하는 구조를 적용할 수 있는 형식이 지정되지 않은 영역입니다. 네트워크 미니 리 디렉터 드라이버 개발자는 RX_CONTEXT 데이터 구조에 정의된 이 미리 지정된 영역에 맞게 연결된 프라이빗 컨텍스트를 시도하고 정의해야 합니다. 이 규칙을 위반하는 네트워크 미니 리디렉터 드라이버에는 상당한 성능 저하가 발생합니다.

네트워크 미니 리다이렉터에서 내보낸 많은 RDBSS 루틴 및 루틴은 시작 스레드 또는 루틴에서 사용하는 다른 스레드에서 RX_CONTEXT 구조를 참조합니다. 따라서 할당된 RX_CONTEXT 구조체는 비동기 작업에 대한 사용을 관리하기 위해 계산됩니다. 참조 수가 0으로 이동하면 할당된 RX_CONTEXT 구조체를 최종화하고 마지막 역참조 작업에서 해제할 수 있습니다.

RDBSS는 RX_CONTEXT 및 연결된 IRP를 조작하는 데 사용되는 여러 루틴을 제공합니다. 이러한 루틴은 RX_CONTEXT 할당, 초기화 및 삭제하는 데 사용됩니다. 이러한 루틴은 RX_CONTEXT 연결된 IRP를 완료하고 RX_CONTEXT 대한 취소 루틴을 설정하는 데도 사용됩니다.

요구 사항

요구 사항
헤더 rxcontx.h(Rx.h, Rxcontx.h 포함)

추가 정보

FILE_GET_EA_INFORMATION

IOCTL_REDIR_QUERY_PATH

IOCTL_REDIR_QUERY_PATH_EX

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_DIRECTORY_CONTROL

IRP_MJ_QUERY_EA

IRP_MJ_QUERY_QUOTA

IRP_MJ_QUERY_SECURITY

IRP_MJ_SET_QUOTA

IRP_MJ_SET_SECURITY

IoCompletion

IoMarkIrpPending

MRxCreate

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxQueryVolumeInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetSdInfo

MRxSetVolumeInfo

RxCreateRxContext

RxInitializeContext

RxStartMinirdr