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


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

Структура RX_CONTEXT инкапсулирует IRP для использования RDBSS, сетевыми мини-перенаправлениями и файловой системой. Структура 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. Все основные типы структур (например, RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB и FOBX), используемые RDBSS, имеют уникальный двухбайтовый код типа узла, определенный во включаемом файле nodetype.h , который можно использовать для отладки. RDBSS задает этому элементу значение RDBSS_NTC_RX_CONTEXT при инициализации RX_CONTEXT в подпрограмме RxInitializeContext . Если драйвер сетевого мини-перенаправления инициализирует структуру RX_CONTEXT с помощью другого метода, необходимо задать этот элемент.

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

NodeByteSize

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

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

ReferenceCount

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

StoredStatus

StoredStatusAlignment

InformationToReturn

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

Элемент структуры неименованного объединения, используемого для подпрограмм MRxQueryDirectory, MRxQueryFileInfo, MRxQueryVolumeInfo, MRxSetFileInfo, MRxSetFileInfoAtCleanup и MRxSetVolumeInfo . 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. Элемент Buffer используется в подпрограммах MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup и MrxSetVolumeInfo .

Info.Length

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

Info.LengthRemaining

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

Info.ReplaceIfExists

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

Info.AdvanceOnly

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

PrefixClaim

Член структуры неименованного объединения, используемый для запросов разрешения префиксов, отправленных от поставщика MUP. Утверждение префикса является результатом запроса IRP_MJ_DEVICE_CONTROL от MUP к RDBSS для 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 передает сведения в элементе структуры Create в сетевой мини-перенаправление, а сетевой мини-перенаправитель возвращает сведения в RDBSS в элементе создания структуры.

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

Строка Юникода, содержащая пароль для этого имени пользователя, используемого для проверки подлинности и авторизации. Этот элемент задается из открытых параметров подключения дерева.

Create.UserDomainName

Строка Юникода, содержащая доменное имя для этого имени пользователя.

QueryDirectory

Член структуры неименованного объединения, используемого для обработки запросов IRP_MJ_DIRECTORY_CONTROL . Этот элемент используется для обработки запросов к каталогу запросов, которые приводят к вызовам подпрограммы MrxQueryDirectory . RDBSS передает сведения в элементе структуры QueryDirectory мини-перенаправлению сети.

QueryDirectory.FileIndex

Индекс записи, с которой начинается сканирование каталога, если для элемента IndexSpecified задано значение TRUE. Для этого параметра задается элемент IrpSp-Parameters.QueryDirectory.FileIndex>.

QueryDirectory.RestartScan

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

QueryDirectory.ReturnSingleEntry

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

QueryDirectory.IndexSpecified

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

QueryDirectory.InitialQuery

Логическое значение, которое имеет значение TRUE, если запрос не является диким карта запросом (".", например). Этот элемент имеет значение TRUE, если элемент UnicodeQueryTemplate.Buffer связанного FOBX имеет значение NULL, а в элементе Flags fobX нет бита FOBX_FLAG_MATCH_ALL. Для дикого запроса карта (например, ".") RDBSS задает член ЮникодаQueryTemplate.Buffer связанного FOBX в качестве дикого карта переданного запроса.

NotifyChangeDirectory

Член структуры неименованного объединения, используемого для обработки запросов IRP_MJ_DIRECTORY_CONTROL с дополнительной функцией IRP_MN_NOTIFY_CHANGE_DIRECTORY. Этот член используется для обработки запросов на изменение каталога, которые приводят к вызовам подпрограммы 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 при первом вызове. Этот параметр имеет значение TRUE, если в IrpSp-Flags> включен бит SL_RESTART_SCAN.

QueryEa.ReturnSingleEntry

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

QueryEa.IndexSpecified

Логическое значение, если задано значение TRUE, указывает, что необходимо начать проверку с записи в расширенных атрибутах, индекс которых задан членом UserEaIndex . Этот параметр имеет значение TRUE, если для параметра IrpSp-Flags> включен бит 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.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

Необязательный указатель на список идентификаторов безопасности, для которых необходимо вернуть сведения о квоте. Каждая запись в списке является 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-Flags> включен бит SL_RETURN_SINGLE_ENTRY.

QueryQuota.IndexSpecified

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

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

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

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

FlagsForLowIo

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

LowIoContext

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

Комментарии

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

Структуру RX_CONTEXT иногда называют контекстом IRP или RxContext в файлах заголовков пакета драйверов Windows (WDK) или ПАКЕТА IFS и других ресурсах, используемых для разработки драйверов сетевого мини-перенаправления.

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