Share via


Função AcxStreamInitAssignAcxRequestPreprocessCallback (acxstreams.h)

A função AcxStreamInitAssignAcxRequestPreprocessCallback atribui um AcxRequestPreprocessCallback a um fluxo.

Sintaxe

NTSTATUS AcxStreamInitAssignAcxRequestPreprocessCallback(
  PACXSTREAM_INIT                   StreamInit,
  EVT_ACX_OBJECT_PREPROCESS_REQUEST EvtObjectAcxRequestPreprocess,
  ACXCONTEXT                        DriverContext,
  ACX_REQUEST_TYPE                  RequestType,
  const GUID                        *Set,
  ULONG                             Id
);

Parâmetros

StreamInit

Definido por um objeto ACXSTREAM_INIT, que é usado para definir a inicialização do fluxo. Para obter mais informações sobre objetos ACX, consulte ACX – Resumo de objetos ACX.

EvtObjectAcxRequestPreprocess

Um EvtObjectAcxRequestPreprocess que será chamado pela estrutura ACX antes que qualquer manipulação interna da solicitação seja executada.

DriverContext

Um objeto ACXCONTEXT opcional que representa o contexto atual do driver.

RequestType

A enumeração ACX_REQUEST_TYPE usada para definir o tipo de solicitação. Se AcxRequestTypeAny for especificado, EvtObjectAcxRequestProcess será chamado para todas as solicitações.

Set

Um ponteiro para um GUID que representa um KSPROPERTY SET, por exemplo , KSPROPSETID_RtAudio. Se NULL ou GUID_NULL forem especificados, EvtObjectAcxRequestPreprocess será chamado para cada solicitação que corresponda a RequestType

Id

Um valor que representa uma ID KSPROPERTY. Por exemplo, um KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT A que usa uma estrutura KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY. Se AcxItemIdAny for especificado, EvtObjectAcxRequestPreprocess será chamado para cada propriedade para o Set especificado.

Retornar valor

Retorna STATUS_SUCCESS se a chamada foi bem-sucedida. Caso contrário, ele retornará um código de erro apropriado. Para obter mais informações, consulte Usando valores NTSTATUS.

Comentários

AcxStreamInitAssignAcxRequestPreprocessCallback dá ao driver a oportunidade de lidar com solicitações antes que o ACX execute a manipulação da estrutura. O driver pode chamar AcxStreamDispatchAcxRequest para permitir que o ACX manipule a solicitação. Se o driver manipular a solicitação em si, ele poderá chamar WdfRequestComplete ou WdfRequestCompleteWithInformation para concluir a solicitação.

O driver deve chamar AcxStreamDispatchAcxRequest ou WdfRequestComplete (ou WdfRequestCompleteWithInformation). O driver não deve chamar mais de uma dessas APIs com a solicitação.

O driver pode registrar mais de um AcxRequestPreprocessCallback. A estrutura ACX chamará o primeiro AcxRequestPreprocessCallback atribuído que corresponde a uma solicitação.

Exemplo

O uso de exemplo é mostrado abaixo.

    //
    // 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);

Requisitos do ACX

Versão mínima do ACX: 1.0

Para obter mais informações sobre versões do ACX, consulte Visão geral da versão do ACX.

Requisitos

Requisito Valor
Cabeçalho acxstreams.h
IRQL PASSIVE_LEVEL

Confira também