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


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

См. также

  • заголовка acxstreams.h