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 |