Поделиться через


Функция 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

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