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

指向表示 KSPROPERTY SET 的 GUID 的指针,例如 KSPROPSETID_RtAudio。 如果指定了 NULL 或GUID_NULL,则将为每个与 RequestType 匹配的请求调用 EvtObjectAcxRequestPreprocess

Id

一个值,该值表示 KSPROPERTY ID。例如,使用KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY结构的 A KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT。 如果指定了 AcxItemIdAny,则将为指定 Set 的每个属性调用 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 版本概述

要求

要求
Header acxstreams.h
IRQL PASSIVE_LEVEL

另请参阅