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 |