Поделиться через


структура RX_CONTEXT (rxcontx.h)

Структура RX_CONTEXT инкапсулирует IRP для использования RDBSS, мини-перенаправлений сети и файловой системы. Он описывает 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 задает этому элементу значение RDBSS_NTC_RX_CONTEXT при инициализации RX_CONTEXT в RxInitializeContext. Если драйвер мини-перенаправления сети инициализирует структуру RX_CONTEXT с помощью другого метода, этот элемент должен быть задан.

RDBSS определяет этот элемент как часть стандартного заголовка для всех структур, используемых RDBSS.

Все основные типы структур, используемые RDBSSS, имеют уникальный код двухбайтового типа узла, определенный в nodetype.h, который можно использовать для отладки. К этим основным типам структур относятся следующие:

NodeByteSize

Размер этой структуры в байтах. RDBSS устанавливает этот элемент на sizeof (RX_CONTEXT) при инициализации RX_CONTEXT в подпрограмме RxInitializeCon text. Если драйвер мини-перенаправления сети инициализирует структуру RX_CONTEXT с помощью другого метода, этот элемент должен быть задан.

RDBSS определяет этот элемент как часть стандартного заголовка для всех структур, используемых RDBSS.

ReferenceCount

Количество ссылок для этой структуры после выделения. RDBSS задает для этого элемента значение 1, если RX_CONTEXT выделен и инициализирован в подпрограмме RxInitializeCon text. Если драйвер мини-перенаправления сети инициализирует структуру RX_CONTEXT с помощью другого метода, этот элемент должен быть задан.

RDBSS определяет этот элемент как часть стандартного заголовка для всех структур, используемых RDBSS.

ContextListEntry

Запись списка для подключения этого RX_CONTEXT к списку активных RX_CONTEXTS.

MajorFunction

Основная функция для IRP, инкапсулируемая этим RX_CONTEXT.

MinorFunction

Дополнительная функция для IRP, инкапсулируемая этим RX_CONTEXT.

PendingReturned

Если задано значение TRUE, это указывает, что RDBSS или драйвер помечает ожидание IRP. Каждый подпрограмме IoCompletion должен проверить значение этого флага. Если флаг имеет значение TRUE, и если подпрограмма ioCompletion не возвращает STATUS_MORE_PROCESSING_REQUIRED, подпрограмма должна вызывать IoMarkIrpPending, чтобы распространить состояние ожидания на драйверы над ним в стеке устройств. Этот элемент похож на то же поле в IRP.

RDBSS всегда задает этому члену значение TRUE перед вызовом драйвера мини-перенаправления сети.

PostRequest

Если задано значение TRUE, это указывает, должен ли связанный запрос быть размещен в рабочем потоке RDBSS. Мини-перенаправление сети может задать для этого члена значение TRUE, чтобы указать, что он хочет опубликовать этот запрос в процесс файловой системы (FSP).

RealDevice

Указатель на объект устройства для драйвера мини-перенаправления целевой сети. RDBSS задает этот член объекту устройства для драйвера мини-перенаправления сети, если RX_CONTEXT выделен в подпрограмме RxInitializeContext. Этот элемент копируется из элемента FileObject->DeviceObject из стека IRP. Объект устройства для мини-перенаправления сети также хранится в элементе структуры RxDeviceObject.

Элемент RealDevice в настоящее время не используется RDBSS, но может использоваться сетевыми мини-перенаправлениями.

CurrentIrp

Указатель на исходный IRP. Этот член не должен использоваться драйвером мини-перенаправления сети.

CurrentIrpSp

Указатель на расположение стека IRP.

pFcb

Указатель на связанный блок управления файлами (FCB) для этого IRP.

pFobx

Указатель на связанное расширение объекта файла (FOBX) для этого IRP.

pRelevantSrvOpen

Указатель на связанный сервер open(SRV_OPEN) для этого IRP.

NonPagedFcb

Указатель на связанный блок управления нестраничных файлов (FCB) для этого IRP.

RxDeviceObject

Указатель на RDBSS_DEVICE_OBJECT для драйвера мини-перенаправления целевой сети, который необходим для алгоритмов очереди рабочей роли. RDBSS задает этот элемент RDBSS_DEVICE_OBJECT для мини-перенаправления сети при инициализации RX_CONTEXT в подпрограмме RxInitializeCon text. Структура RxDeviceObject включает элемент DeviceObject, содержащий объект устройства для драйвера мини-перенаправления сети, который совпадает с элементом RealDevice члена RX_CONTEXT.

OriginalThread

Указатель на исходный поток, в котором был инициирован запрос.

LastExecutionThread

Указатель на последний поток, в котором была выполнена некоторая обработка, связанная с RX_CONTEXT, если поток был размещен в процессе файловой системы.

LockManagerContext

Указатель на контекст диспетчера блокировки. Этот элемент зарезервирован для внутреннего использования.

RdbssDbgExtension

Указатель на контекст, заданный RDBSS для отладки сведений. Этот элемент зарезервирован для внутреннего использования.

ScavengerEntry

Указатель на список элементов для очистки. Этот элемент зарезервирован для внутреннего использования.

SerialNumber

Серийный номер для этой RX_CONTEXT структуры. Каждая структура, инициализированная RDBSS, имеет серийный номер, назначенный при первой инициализации структуры. Этот серийный номер — это число, которое увеличивается по одному до задания значения. RDBSS задает этот элемент при инициализации RX_CONTEXT в подпрограмме RxInitializeContext. RDBSS

FobxSerialNumber

Серийный номер связанной структуры FOBX. Каждая структура, инициализированная RDBSS, имеет серийный номер, назначенный при первой инициализации структуры. Этот член может использоваться сетевыми мини-перенаправлениями, чтобы узнать, являются ли несколько вызовов частью одной и той же большей операции и поэтому более кэшируются.

Flags

битовая маска флагов для этой структуры RX_CONTEXT.

FcbResourceAcquired

Если задано значение TRUE, этот элемент указывает, что ресурс FCB был приобретен для этой операции. Ресурс FCB является одним из механизмов блокировки, связанных с операцией в FCB.

FcbPagingIoResourceAcquired

Если задано значение TRUE, этот элемент указывает, что для этой операции был приобретен ресурс ввода-вывода для разбиения на страницах FCB. Ресурс ввода-вывода для разбиения на страницах FCB является одним из механизмов блокировки, связанных с операцией ввода-вывода на разбиение на разбиение данных в FCB.

MustSucceedDescriptorNumber

Элемент изначально присваивает нулю в подпрограмме RxCreateRxContext rxCreateRtext. Этот элемент не используется RDBSS, но может использоваться сетевыми мини-перенаправлениями.

StoredStatus

Член неназванного объединения, используемый для возврата сведений о состоянии драйвером мини-перенаправления сети для низкой операции ввода-вывода. RDBSS также задает это значение на основе состояния, возвращаемого подпрограммой MRxQueryFileInfo, если операция запроса файла не понимается RDBSS.

StoredStatusAlignment

Член неназванного объединения, используемый для принудительного выравнивания элемента StoredStatus.

InformationToReturn

Член неназванного объединения, используемый для возврата сведений о состоянии драйвером мини-перенаправления сети для некоторых низких операций ввода-вывода (чтение, запись, FSCTL и т. д.) и операции mrxQueryXXX.

Уникальный тип узла, используемый для структуры RX_CONTEXT. Все основные типы структур (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB и FOBX, например), используемые RDBSS, имеют уникальный код типа двухбайтового узла, определенный в nodetype.h включить файл, который можно использовать для отладки. RDBSS задает этому элементу значение RDBSS_NTC_RX_CONTEXT при инициализации RX_CONTEXT в подпрограмме RxInitializeCon text. Если драйвер мини-перенаправления сети инициализирует структуру RX_CONTEXT с помощью другого метода, этот элемент должен быть задан.

RDBSS определяет этот элемент как часть стандартного заголовка для всех структур, используемых RDBSS.

IoStatusBlock

Блок состояния ввода-вывода, используемый мини-перенаправлением сети для возврата сведений о состоянии. Элемент 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

Указатель на мьютекс, который управляет сериализацией заблокированных операций. Этот элемент зарезервирован для внутреннего использования.

RxContextSerializationQLinks

Указатель на запись списка, используемую для сериализации операций канала на основе каждого объекта. Этот элемент зарезервирован для внутреннего использования.

Info

Элемент структуры неназванного объединения, используемый для следующих подпрограмм:

RDBSS передает сведения в элемент структуры info в мини-перенаправление сети, а мини-перенаправление сети возвращает сведения в RDBSS в элементе структуры info.

Info.FsInformationClass

Член неназванного объединения, используемого RDBSS для передачи типа FS_INFORMATION_CLASS, запрошенного драйверу мини-перенаправления сети. RDBSS передает сведения в члене FsInformationClass при вызове MrxQueryVolumeInfo и MrxSetVolumeInfo.

Info.FileInformationClass

Член неназванного объединения, используемого RDBSS для указания типа запроса FILE_INFORMATION_CLASS, отправленного драйверу мини-перенаправления сети. RDBSS передает сведения в члене FileInformationClass при вызове MrxQueryDirectory, MrxQueryFileInfoи MrxSetFileInfo.

Info.Buffer

Буфер, используемый для передачи данных из RDBSS в драйвер мини-перенаправления сети и получение ответов от драйвера мини-перенаправления сети RDBSS. Элемент буфера используется в mrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanupи подпрограммы MrxSetVolume Info.

Info.Length

Член неназванного объединения, используемый для передачи длины элемента буфера из RDBSS в драйвер мини-перенаправления сети. Элемент длины используется в mrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfomrxSetFileInfo, MRxSetFileInfoAtCleanupи подпрограммы MrxSetVolumeInfo.

Info.LengthRemaining

Член неназванного объединения, используемый для передачи длины информации, возвращаемой в элементе буфера из драйвера мини-перенаправления сети в RDBSS. Элемент LengthRemaining используется в mrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanupи подпрограммы MrxSetVolumeInfo.

Info.ReplaceIfExists

Логическое значение, указывающее, следует ли заменить существующий файл во время операции переименования. Элемент ReplaceIfExists используется в подпрограмме MrxSetFileInfo.

Info.AdvanceOnly

Этот элемент зарезервирован для внутреннего использования.

PrefixClaim

Элемент структуры неназванного объединения, используемый для запросов разрешения префикса, отправленных из нескольких поставщиков UNC (MUP). Утверждение префикса приводит к получению запроса IRP_MJ_DEVICE_CONTROL из MUP в RDBSSS для IOCTL_REDIR_QUERY_PATH или IOCTL_REDIR_QUERY_PATH_EX. RDBSS передает сведения в структуре PrefixClaim в мини-перенаправление сети, а мини-перенаправление сети возвращает сведения в RDBSS в структуре PrefixClaim.

PrefixClaim.SuppliedPathName

Строка Юникода, не являющаяся null, указывающая UNC-путь, на котором выполняется разрешение префикса.

PrefixClaim.NetRootType

Тип запрошенного NET_ROOT. Этот элемент в настоящее время не используется. RDBSS выводит тип NET_ROOT из элемента SuppliedPathName.

PrefixClaim.pSecurityContext

Указатель на контекст безопасности, переданный из запроса из MUP.

Этот элемент в настоящее время не используется. Контекст безопасности передается в Create.NtCreateParameters.SecurityContext члена RX_CONTEXT, а не в этом элементе.

Create

Элемент структуры неназванного объединения, используемый для обработки IRP_MJ_CREATE запросов. Этот элемент используется для обработки запросов на открытие файла, которые приводят к вызовам подпрограммы MRxCreate. Этот член также используется для запросов разрешения префиксов. RDBSS передает сведения в элемент структуры в мини-перенаправление сети, а мини-перенаправление сети возвращает сведения в RDBSS в элементе структуры Create.

Create.NtCreateParameters

Параметры создания, передаваемые в режим пользователя подпрограмме NtCreatefile. RDBSS задает элементы структуры NtCreateParameters на основе элементов Parameters.Create IRP.

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 задает это на основе значения Parameters.Create.SecurityContext члена IRP. Если элемент sdLength не является ненулевой, дескриптор безопасности передается в элемент Info.Buffer в мини-перенаправление сети.

Create.PipeType

Тип канала. Этот элемент зарезервирован для внутреннего использования.

Create.PipeReadMode

Режим чтения для канала. Этот элемент зарезервирован для внутреннего использования.

Create.PipeCompletionMode

Режим завершения для канала. Этот элемент зарезервирован для внутреннего использования.

Create.Flags

Флаги создания

Create.Type

Тип связанной NET_ROOT структуры.

Create.RdrFlags

Create.FcbAcquired

Этот элемент зарезервирован для внутреннего использования.

Create.TryForScavengingOnSharingViolation

Этот элемент зарезервирован для внутреннего использования.

Create.ScavengingAlreadyTried

Этот элемент зарезервирован для внутреннего использования.

Create.ThisIsATreeConnectOpen

Логическое значение, указывающее, является ли этот вызов деревом подключать открытый запрос с параметром FILE_CREATE_TREE_CONNECTION, заданным в элементе IrpSp->Parameters.Create.Options.

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 при первом вызове. Этот параметр имеет значение TRUE, если флаги IrpSp->флаги имеют SL_RESTART_SCAN бит.

QueryDirectory.ReturnSingleEntry

Логическое значение, равное TRUE, указывает, что возвращается только одна запись. Если этот параметр имеет значение TRUE, MrxQueryDirectory должен возвращать только первую запись, найденную. Этот параметр имеет значение TRUE, если флаги IrpSp->флаги имеют SL_RETURN_SINGLE_ENTRY бит.

QueryDirectory.IndexSpecified

Логическое значение, если задано значение TRUE, указывает, чтобы начать сканирование в записи в каталоге, индекс которого задан элементом FileIndex. Этот параметр имеет значение TRUE, если флаги IrpSp->флаги имеют SL_INDEX_SPECIFIED бит.

QueryDirectory.InitialQuery

Логическое значение, которое имеет значение TRUE, если запрос не является подстановочным запросом (".", например). Этот элемент имеет значение TRUE, если элемент ЮникодQueryTemplate.Buffer член связанного FOBX имеет значение NULL, а Флаги элемента FOBX не имеют FOBX_FLAG_MATCH_ALL бита. Для запроса с подстановочными карточками (".", например), RDBSSS установит ЮникодQueryTemplate.Buffer член связанного FOBX с переданным запросом подстановочной карточки.

NotifyChangeDirectory

Элемент структуры неназванного объединения, используемый для обработки запросов IRP_MJ_DIRECTORY_CONTROL с дополнительной функцией IRP_MN_NOTIFY_CHANGE_DIRECTORY. Этот член используется для обработки запросов на изменение каталога, которые приводят к вызовам подпрограммы MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]. RDBSS передает сведения в элементе структуры NotifyChangeDirect ory и элементе структуры 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 указывает на список nonempty. Этот параметр имеет значение IrpSp->Parameters.QueryEa.EaIndex.

QueryEa.RestartScan

Логическое значение, если задано значение TRUE, указывает, что запрос начинается с первой расширенной записи атрибута. Если для этого значения задано значение FALSE, проверка возобновляется из предыдущего вызова. Этот параметр должен иметь значение TRUE при первом вызове. Этот параметр имеет значение TRUE, если флаги>IrpSp- имеют SL_RESTART_SCAN бит.

QueryEa.ReturnSingleEntry

Логическое значение, если задано значение TRUE, указывает, что возвращается только одна запись. Если этот параметр имеет значение TRUE, mrxQueryEaInfo должен возвращать только первую запись, найденную. Этот параметр имеет значение TRUE, если флаги IrpSp->флаги имеют SL_RETURN_SINGLE_ENTRY бит.

QueryEa.IndexSpecified

Логическое значение, если задано значение TRUE, указывает, чтобы начать сканирование с записи в расширенных атрибутах, индекс которого присваивается элементу UserEaIndex. Этот параметр имеет значение TRUE, если флаги IrpSp->флаги имеют SL_INDEX_SPECIFIED бит.

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 в мини-перенаправление сети.

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

Необязательный указатель на идентификатор безопасности, указывающий, что возвращаемые сведения начинаются с записи, отличной от первой записи. Этот параметр игнорируется, если указан элемент SidList. Этот параметр имеет значение IrpSp->Parameters.QueryQuota.StartSid.

QueryQuota.SidList

Необязательный указатель на список идентификаторов SID, сведения о квоте которых должны быть возвращены. Каждая запись в списке представляет собой FILE_GET_QUOTA_INFORMATION структуру. Этот параметр имеет значение IrpSp->Parameters.QueryQuota.SidList.

QueryQuota.SidListLength

Длина в байтах списка идентификаторов БЕЗОПАСНОСТИ в элементе SidList, если он указан. Этот параметр имеет значение IrpSp->Parameters.QueryQuota.SidListLength.

QueryQuota.RestartScan

Логическое значение, если задано значение TRUE, указывает, что запрос начинается с первой записи. Если для этого значения задано значение FALSE, проверка возобновляется из предыдущего вызова. Этот параметр должен иметь значение TRUE при первом вызове. Этот параметр имеет значение TRUE, если IrpSp->Flagsимеет SL_RESTART_SCAN бит.

QueryQuota.ReturnSingleEntry

Логическое значение, если задано значение TRUE, указывает, что возвращается только одна запись. Если этот параметр имеет значение TRUE, mrxQueryQuotaInfo должен возвращать только первую запись, найденную. Этот параметр имеет значение TRUE, если флаги IrpSp->флаги имеют SL_RETURN_SINGLE_ENTRY бит.

QueryQuota.IndexSpecified

Логическое значение, если задано значение TRUE, указывает, чтобы начать сканирование записи в списке, индекс которого задан элементом StartSid. Этот параметр имеет значение TRUE, если флаги IrpSp->флаги имеют SL_INDEX_SPECIFIED бит.

SetQuota

Элемент структуры неназванного объединения, используемый для обработки запросов IRP_MJ_SET_QUOTA. Эта структура в настоящее время не используется RDBSS.

SetQuota.Length

Неиспользуемый элемент структуры SetQuota.

DosVolumeFunction

Элемент структуры неназванного объединения. Эта структура в настоящее время не используется RDBSS.

DosVolumeFunction.VNetRoot

Неиспользуемый элемент структуры DosVolumeFunction.

DosVolumeFunction.SrvCall

Неиспользуемый элемент структуры DosVolumeFunction.

DosVolumeFunction.NetRoot

Неиспользуемый элемент структуры DosVolumeFunction.

FlagsForLowIo

Набор RX_CONTENT_CREATE_FLAGS, заданный RDBSS и передаваемый в операции ввода-вывода с низким уровнем ввода-вывода, отправленные в мини-перенаправление сети. FlagsForLowIo является членом неименованной структуры, используемой для низких запросов ввода-вывода к мини-перенаправлению сети.

LowIoContext

Указатель на структуру LOWIO_CONTEXT, переданную в мини-перенаправление сети. LowIoContext входит в неназванную структуру, используемую для низкой передачи запросов ввода-вывода, отправленных в мини-перенаправление сети.

AlsoCanonicalNameBuffer

Указатель на строку Юникода, представляющую имя физического файла, чтобы открыть, если каноническое имя больше доступного буфера.

LoudCompletionString

Неиспользуемый элемент структуры RX_CONTEXT.

AcquireReleaseFcbTrackerX

Зарезервировано для использования системы.

TrackerHistoryPointer

Зарезервировано для использования системы.

TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]

Зарезервировано для использования системы.

ShadowCritOwner

Зарезервировано для использования системы.

Замечания

Структура RX_CONTEXT является одной из основных структур данных, используемых RDBSS и мини-перенаправлениями сети для управления пакетом запросов ввода-вывода (IRP). Он инкапсулирует IRP для использования RDBSS, сетевых мини-перенаправлений и файловой системы. Структура RX_CONTEXT включает указатель на один IRP и весь контекст, необходимый для обработки IRP.

Структура RX_CONTEXT иногда называется контекстом IRP или RxContext в файлах заголовков WDK и других ресурсах, используемых для разработки драйверов мини-перенаправления сети.

RX_CONTEXT — это структура данных, к которой подключены дополнительные сведения, предоставляемые различными сетевыми мини-перенаправлениями. RX_CONTEXT включает поля для выделения размера каждой RX_CONTEXT структуры по предварительно заданному количеству для каждого мини-перенаправления сети, который затем зарезервирован для использования мини-перенаправлением. Этот подход состоит из выделения предварительно указанной области, которая одинакова для всех мини-перенаправлений сети в рамках каждой RX_CONTEXT. Это неформатированная область, поверх которой любая требуемая структура может быть введена различными мини-перенаправлениями сети. Разработчики сетевых мини-перенаправлений должны попытаться определить связанный частный контекст, чтобы он соответствовал этой предварительно заданной области, определенной в структуре данных RX_CONTEXT. Драйверы мини-перенаправления сети, которые нарушают это правило, будут нести значительный штраф за производительность.

Многие подпрограммы и подпрограммы RDBSS, экспортированные мини-перенаправлением сети, ссылаются на RX_CONTEXT структуры в инициирующем потоке или в другом потоке, используемом подпрограммой. Таким образом, выделенные RX_CONTEXT структуры считаются ссылочными для управления их использованием для асинхронных операций. Когда число ссылок переходит к нулю, выделенная RX_CONTEXT структура может быть завершена и выпущена при последней операции разыменования.

RDBSS предоставляет ряд подпрограмм, которые используются для управления RX_CONTEXT и связанной IRP. Эти подпрограммы используются для выделения, инициализации и удаления RX_CONTEXT. Эти подпрограммы также используются для завершения IRP, связанного с RX_CONTEXT, и настройки подпрограммы отмены для 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