Функция 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 SET, например KSPROPSETID_RtAudio. Если задано значение NULL или GUID_NULL, для каждого запроса, соответствующего RequestType, будет вызываться EvtObjectAcxRequestPreprocess.
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 |