Функция AcxStreamInitAssignAcxRequestPreprocessCallback (acxstreams.h)
Функция AcxStreamInitAssignAcxRequestPreprocessCallback назначает acxRequestPreprocessCallback потоку.
Синтаксис
NTSTATUS AcxStreamInitAssignAcxRequestPreprocessCallback(
PACXSTREAM_INIT StreamInit,
EVT_ACX_OBJECT_PREPROCESS_REQUEST EvtObjectAcxRequestPreprocess,
ACXCONTEXT DriverContext,
ACX_REQUEST_TYPE RequestType,
const GUID *Set,
ULONG Id
);
Параметры
StreamInit
Определяется объектом ACXSTREAM_INIT, который используется для определения инициализации потока. Дополнительные сведения о объектах ACX см. в ACX — сводка по объектам ACX.
EvtObjectAcxRequestPreprocess
EvtObjectAcxRequestPreprocess, который будет вызываться платформой ACX перед выполнением любой внутренней обработки запроса.
DriverContext
Необязательный объект ACXCONTEXT, представляющий текущий контекст драйвера.
RequestType
Перечисление ACX_REQUEST_TYPE, используемое для определения типа запроса. Если указан AcxRequestTypeAny, evtObjectAcxRequestProcess будет вызываться для всех запросов.
Set
Указатель на GUID, представляющий набор KSPROPERTY, например KSPROPSETID_RtAudio. Если задано значение NULL или GUID_NULL, вызовется evtObjectAcxRequestPreprocess для каждого запроса, соответствующего RequestType.
Id
Значение, представляющее идентификатор KSPROPERTY. Например, KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT A, использующий структуруKSRTAUDIO_NOTIFICATION_EVENT_PROPERTY. Если указан AcxItemIdAny, для каждого свойства для указанного набора будет вызываться EvtObjectAcxRequestPreprocess.
Возвращаемое значение
Возвращает STATUS_SUCCESS
, если вызов выполнен успешно. В противном случае возвращается соответствующий код ошибки. Дополнительные сведения см. в использовании значений NTSTATUS.
Замечания
AcxStreamInitAssignAcxRequestPreprocessCallback дает драйверу возможность обрабатывать любые запросы, прежде чем ACX выполняет обработку платформы. Драйвер может вызывать AcxStreamDispatchAcxRequest, чтобы разрешить ACX обрабатывать запрос. Если драйвер обрабатывает сам запрос, он может вызвать WdfRequestComplete или WdfRequestCompleteWithInformation, чтобы завершить запрос.
Драйвер должен вызвать AcxStreamDispatchAcxRequest или WdfRequestComplete (или WdfRequestCompleteWithInformation). Драйвер не должен вызывать несколько этих API с запросом.
Драйвер может зарегистрировать несколько acxRequestPreprocessCallback. Платформа ACX вызовет первый назначенный AcxRequestPreprocessCallback, соответствующий запросу.
Пример
Ниже показан пример использования.
//
// Intercept register and unregister events properties.
//
status = AcxStreamInitAssignAcxRequestPreprocessCallback(
StreamInit,
EvtStreamRequestPreprocessRegisterNotificationEvent,
(ACXCONTEXT)Circuit,
AcxRequestTypeProperty,
&KSPROPSETID_RtAudio,
KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT);
//
// Intercept all other RtAudio properties - this must be after the above Assign call
// since the above Assign call is more specific.
//
status = AcxStreamInitAssignAcxRequestPreprocessCallback(
StreamInit,
EvtStreamRequestPreprocessRtAudio,
(ACXCONTEXT)Circuit,
AcxRequestTypeProperty,
&KSPROPSETID_RtAudio,
AcxItemIdAny);
Требования к ACX
минимальная версия ACX: 1.0
Дополнительные сведения о версиях ACX см. в обзоре версий ACX.
Требования
Требование | Ценность |
---|---|
заголовка | acxstreams.h |
IRQL | PASSIVE_LEVEL |