Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
RxInitializeContext инициализирует существующую структуру данных RX_CONTEXT.
Синтаксис
void RxInitializeContext(
[in, optional] IN PIRP Irp,
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN ULONG InitialContextFlags,
[in, out] IN OUT PRX_CONTEXT RxContext
);
Параметры
[in, optional] Irp
Указатель на IRP, который будет инкапсулирован этой RX_CONTEXT структурой.
[in] RxDeviceObject
Указатель на объект устройства, к которому применяется этот RX_CONTEXT и IRP.
[in] InitialContextFlags
Набор начальных значений для элемента Flags структуры данных RX_CONTEXT, хранящейся в структуре RX_CONTEXT. Эти начальные значения могут быть любой комбинацией следующих перечислений:
RX_CONTEXT_FLAG_WAIT
Если это значение задано, IRP не должен быть размещен для последующего выполнения процессом файловой системы, но его следует ждать завершения.
RX_CONTEXT_FLAG_MUST_SUCCEED
Если задано это значение, операция должна завершиться успешно. Это значение в настоящее время не используется RDBSS, но оно может использоваться драйверами мини-перенаправления сети.
RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING
Если это значение задано, операция должна завершиться успешно для неблокирующих операций. Это значение в настоящее время не используется RDBSS, но оно может использоваться драйверами мини-перенаправления сети.
[in, out] RxContext
Указатель на инициализацию RX_CONTEXT.
Возвращаемое значение
Никакой
Замечания
RxInitializeContext вызывается подпрограммой RxCreateRxContext. Поэтому подпрограмма RxInitializeContext обычно будет использоваться только драйверами сетевого мин-перенаправления, которые выделяют RX_CONTEXT структуры напрямую, а не вызов ите подпрограмму RxCreateRxContext для выделения и инициализации структуры RX_CONTEXT.
Если параметр Irp настроен для асинхронной операции, то элемент флагов флагов RX_CONTEXT структуры, на которую указывает RxContext также имеет следующий набор значений:
RX_CONTEXT_FLAG_ASYNC_OPERATION также устанавливается для следующих условий:
- MajorFunction членом Irp является IRP_MJ_READ, IRP_MJ_WRITE или IRP_MJ_DEVICE_CONTROL.
- Член MajorFunctionIrp является IRP_MJ_DIRECTORY_CONTROL, а minorFunctionIRP является IRP_MN_NOTIFY_CHANGE_DIRECTORY.
- Член MajorFunctionIrp является IRP_MJ_FILE_SYSTEM_CONTROL и NetRoot связанного fcB не NULL, а тип NET_ROOT является NET_ROOT_PIPE.
Если параметр RxDeviceObject указывает, что это объект устройства RDBSS верхнего уровня, Flags член структуры RX_CONTEXT также имеет следующий набор значений:
Если элемент Irp FileObject Flags имеет набор параметров FO_WRITE_THROUGH, то элемент Flags структуры RX_CONTEXT также имеет следующий набор значений:
RxInitializeContext задает ряд других элементов в структуре RX_CONTEXT, включая следующие:
- Задает правильный NodeTypeCode, NodeByteSize, SerialNumber, RxDeviceObjectи инициализирует ReferenceCount 1.
- Инициализирует SyncEvent
- Инициализация связанного ScavengerEntry
- Инициализирует запись списка ЗаблокированныхOperations
- Задает элементы RX_CONTEXT на основе Irp. К ним относятся CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFc, NonPagedFcb, pFobx, pRelevantSrvOpenи FobxSerialNumber.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | rxcontx.h (include Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
См. также
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially