Функция RxPrepareContextForReuse (rxcontx.h)

RxPrepareContextForReuse подготавливает RX_CONTEXT структуру данных для повторного использования путем сброса всех выделенных ресурсов и приобретений для конкретных операций (для элемента ReferenceCount для структуры RX_CONTEXT задано нулевое значение). Параметры, полученные из IRP, не изменяются.

Синтаксис

void RxPrepareContextForReuse(
  [in, out] IN OUT PRX_CONTEXT RxContext
);

Параметры

[in, out] RxContext

Указатель на структуру RX_CONTEXT.

Возвращаемое значение

None

Remarks

Подпрограмма RxPrepareContextForReuse проверяет, что несколько элементов, относящихся к конкретной операции, в структуре RX_CONTEXT имеют значение NULL , прежде чем задать для элемента ReferenceCount значение 0. Ниже перечислены тесты для конкретных операций, которые должны быть выполнены.

  • Если элемент MajorFunction связанного IRP является IRP_MJ_CREATE, то элемент Create.CanonicalNameBuffer должен иметь значение NULL.
  • Если элемент MajorFunction связанного IRP является IRP_MJ_READ или IRP_MJ_WRITE, то элементы RxContextSerializationQLinks.Flink и RxContextSerializationQLinks.Blinks должны иметь значение NULL.
Если одно из указанных выше условий не выполняется, RxPrepareContextForReuse приводит к тому, что система будет выполнять ASSERT в проверенных сборках.

Подпрограмма RxPrepareContextForReuse обычно используется только драйверами мини-перенаправления сети, которые повторно инициализируют RX_CONTEXT структуры напрямую.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть rxcontx.h (включая Rxprocs.h rxcontx.h)
IRQL <= APC_LEVEL

См. также раздел

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock