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) |
库 | Ksproxy.lib |