ACX_REQUEST_PARAMETERS 结构接收与 I/O ACX 请求关联的参数。
以下参数基于正在调用的服务,例如属性、方法或事件。 驱动程序可以根据ACX_ITEM_TYPE确定要使用的集。
此结构的三种用法有助于将通信发回到现有的内核流式处理 (KS) 类型。 有关 KS 的详细信息,请参阅 KS 属性、事件和方法。
有关每种类型的特定信息,请参阅以下主题。
此外,以下主题可能很有用。
音频驱动程序属性集KSIDENTIFIER 结构 (ks.h)
语法
typedef struct _ACX_REQUEST_PARAMETERS {
USHORT Size;
UCHAR MajorFunction;
UCHAR MinorFunction;
ACX_REQUEST_TYPE Type;
union {
struct {
GUID Set;
ULONG Id;
ACX_PROPERTY_VERB Verb;
ACX_ITEM_TYPE ItemType;
ULONG ItemId;
PVOID Control;
ULONG ControlCb;
PVOID Value;
ULONG ValueCb;
} Property;
struct {
GUID Set;
ULONG Id;
ACX_METHOD_VERB Verb;
ACX_ITEM_TYPE ItemType;
ULONG ItemId;
PVOID Args;
ULONG ArgsCb;
PVOID Result;
ULONG ResultCb;
} Method;
struct {
GUID Set;
ULONG Id;
ACX_EVENT_VERB Verb;
ACX_ITEM_TYPE ItemType;
ULONG ItemId;
PVOID Data;
ULONG DataCb;
ACXEVENTDATA EventData;
} Event;
struct {
PVOID Control;
ULONG ControlCb;
} Create;
} Parameters;
} ACX_REQUEST_PARAMETERS, *PACX_REQUEST_PARAMETERS;
成员
Size
结构的大小(以字节为单位)。
MajorFunction
用于此请求的 WDF IRP 主函数,例如IRP_MJ_DEVICE_CONTROL。 有关 WDF IRP 的详细信息,请参阅 IRP 主要函数代码。
MinorFunction
用于此请求的 WDF IRP 次要函数。 有关次要函数的详细信息,请参阅与主要 IRP 关联的信息,例如 即插即用次要 IRP、电源管理次要 IRP 和 WMI 次要 IRP。
Type
ACX_REQUEST_TYPE 枚举描述将在请求中发送的项目的类型。 根据指定的类型,将使用下面列出的参数的子集。
Parameters
Parameters.Property
KS 属性 的参数用于 ACX 请求。 有关详细信息,请参阅 KSPROPERTY 结构。
Parameters.Property.Set
指定标识内核流属性集的 GUID。
Parameters.Property.Id
指定属性集的成员。
Parameters.Property.Verb
描述属性谓词的 ACX_PROPERTY_VERB 枚举。
Parameters.Property.ItemType
一个 ACX_ITEM_TYPE 枚举,描述 ACX 项类型是此请求的目标。
Parameters.Property.ItemId
项 ID。
Parameters.Property.Control
指向用作 ACX 请求的其他输入参数的系统服务参数的指针。
Parameters.Property.ControlCb
Property.Control 缓冲区的字节数(大小)。
Parameters.Property.Value
指向属性值的指针。
Parameters.Property.ValueCb
Property.Value 缓冲区的字节数(大小)。
Parameters.Method
用于 KS 方法 请求的参数。
Parameters.Method.Set
指定标识内核流式处理方法集的 GUID。
Parameters.Method.Id
指定方法集的成员。
Parameters.Method.Verb
描述要发送的项的 ACX_METHOD_VERB 枚举。
Parameters.Method.ItemType
一个 ACX_ITEM_TYPE 枚举,描述 ACX 项类型是此请求的目标。
Parameters.Method.ItemId
要发送的项的项 ID。
Parameters.Method.Args
指向方法的可选参数的指针。
Parameters.Method.ArgsCb
方法的可选参数的字节(大小)计数。
Parameters.Method.Result
指向方法结果的指针。
Parameters.Method.ResultCb
Method.Result 缓冲区的字节数(大小)。
Parameters.Event
用于用于 ACX 请求的 KS 事件 的参数。 有关详细信息,请参阅 KSEVENT 结构。
Parameters.Event.Set
指定标识内核流式处理事件集的 GUID。
Parameters.Event.Id
指定事件集的成员。
Parameters.Event.Verb
描述要发送的项的 ACX_EVENT_VERB 枚举。
Parameters.Event.ItemType
一个 ACX_ITEM_TYPE 枚举,描述 ACX 项类型是此请求的目标。
Parameters.Event.ItemId
事件项 ID。
Parameters.Event.Data
指向事件数据的指针。
Parameters.Event.DataCb
Event.Data 缓冲区的字节数(大小)。
Parameters.Event.EventData
ACXEVENTDATA 对象。 有关 ACX 对象的详细信息,请参阅 ACX 对象的摘要。
Parameters.Create
包含用于 ACX 请求的创建参数的结构。
Parameters.Create.Control
指向用作 ACX 请求的其他输入参数的系统服务参数的指针。
Parameters.Create.ControlCb
Create.Control 缓冲区的字节数(大小)。
言论
仅当使用 I/O ACX 请求时,驱动程序才必须使用ACX_REQUEST_PARAMETERS。 驱动程序必须使用 WDF 请求 DDI 来处理其他类型的请求。
例
示例用法如下所示。
ACX_REQUEST_PARAMETERS params;
PAGED_CODE();
//
// Get request parameters.
//
ACX_REQUEST_PARAMETERS_INIT(¶ms);
AcxRequestGetParameters(Request, ¶ms);
ASSERT(params.Type == AcxRequestTypeMethod);
ASSERT(params.Parameters.Method.Verb == AcxMethodVerbSend);
ASSERT(params.Parameters.Method.ArgsCb >= argsCb);
args = (PAPX_CIRCUIT_FACTORY_ADD_CIRCUIT)params.Parameters.Method.Args;
argsCb = params.Parameters.Method.ArgsCb; // use real value.
ACX 要求
最低 ACX 版本: 1.0
有关 ACX 版本的详细信息,请参阅 ACX 版本概述。
要求
| 要求 | 价值 |
|---|---|
| 标头 | acxrequest.h |