структура 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) |