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 中设置控制代码以及 InBufferOutBuffer 中的缓冲区,如下所示指定要执行的操作:

  • 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 结构。
若要检索筛选器支持的所有属性、事件或方法的列表,应用程序可以将 IoControl 设置为IOCTL_KS_PROPERTY、IOCTL_KS_ENABLE_EVENT或IOCTL_KS_METHOD。 对于 InBuffer 指向的 KSPROPERTY、KSEVENT 或 KSMETHOD 结构,将 Set 成员设置为 GUID_NULL并将 Flags 成员设置为 KSPROPERTY_TYPE_SETSUPPORT。

调用 KsSynchronousDeviceControl 后, OutBuffer 将包含 由 Handle 指定的对象支持的一组 GUID 数组。

要求

要求
目标平台 桌面
标头 ksproxy.h (包括 Ksproxy.h)
Library Ksproxy.lib

另请参阅

IKsObject::KsGetObjectHandle

IOCTL_KS_DISABLE_EVENT

IOCTL_KS_ENABLE_EVENT

IOCTL_KS_METHOD

IOCTL_KS_PROPERTY

KSEVENT

KSEVENTDATA

KSMETHOD

KSPROPERTY