KsSynchronousDeviceControl 函数 (ksproxy.h)
KsSynchronousDeviceControl 函数向文件句柄指定的 KS 对象发出同步设备 I/O 控制操作。
语法
KSDDKAPI HRESULT KsSynchronousDeviceControl(
[in] HANDLE Handle,
[in] ULONG IoControl,
[in, optional] PVOID InBuffer,
[in] ULONG InLength,
[out, optional] PVOID OutBuffer,
[in] ULONG OutLength,
[in, out] PULONG BytesReturned
);
参数
[in] Handle
要对其执行操作的 KS 对象的句柄。
[in] IoControl
标识要对 KS 对象执行的特定操作类型的控制代码。
[in, optional] InBuffer
指向缓冲区的指针,该缓冲区包含指定要执行的操作的数据。
[in] InLength
InBuffer 处缓冲区的大小(以字节为单位)。
[out, optional] OutBuffer
指向缓冲区的指针,该缓冲区包含操作的数据或接收操作数据的缓冲区空间。
[in] OutLength
OutBuffer 处缓冲区的大小(以字节为单位)。
[in, out] BytesReturned
指向一个变量的指针,该变量接收 KsSynchronousDeviceControl 存储在 OutBuffer 缓冲区中的数据的大小(以字节为单位)。
返回值
如果成功,则返回 NOERROR;否则,将返回错误代码。
注解
若要检索 KS 对象的句柄,应用程序应调用 IKsObject::KsGetObjectHandle 方法。
应用程序可以在 IoControl 中设置控制代码以及 InBuffer 和 OutBuffer 中的缓冲区,如下所示指定要执行的操作:
- 将 IoControl 设置为 IOCTL_KS_PROPERTY 以访问属性。 将 InBuffer 设置为指向 KSPROPERTY 结构,该结构指定要访问的属性集的属性,以及是否检索有关属性的信息或属性中的设置信息。 若要在 属性中设置信息,请将 OutBuffer 设置为指向该信息。 若要从 属性检索信息,请将 OutBuffer 设置为接收该信息。
- 将 IoControl 设置为 IOCTL_KS_METHOD 以执行方法。 将 InBuffer 设置为指向 KSMETHOD 结构,该结构指定要执行的方法集的方法,以及是否读取和/或写入与该方法相关的数据。 若要读取数据,请将 OutBuffer 设置为指向该数据。 若要写入数据,请设置 OutBuffer 以接收该数据。
- 将 IoControl 设置为 IOCTL_KS_ENABLE_EVENT ,以请求 Handle 指定的 KS 对象在发生特定事件操作时通知应用程序。 将 InBuffer 设置为指向 KSEVENT 结构,该结构指定要通知的事件集的事件。 将 OutBuffer 设置为指向 KSEVENTDATA 结构,该结构描述 KS 对象在事件发生时应如何通知应用程序。 另请参阅 KS 事件。
- 将 IoControl 设置为 IOCTL_KS_DISABLE_EVENT 以通知 Handle 指定的 KS 对象,以便在发生特定事件操作时停止通知应用程序。 将 InBuffer 设置为指向之前在事件通知请求中使用的 KSEVENTDATA 结构。
调用 KsSynchronousDeviceControl 后, OutBuffer 将包含 由 Handle 指定的对象支持的一组 GUID 数组。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | ksproxy.h (包括 Ksproxy.h) |
Library | Ksproxy.lib |