IWMDMDevice3::D eviceIoControl 方法 (mswmdm.h)
DeviceIoControl 方法将设备 I/O 控制 (IOCTL) 代码发送到设备。 这是一种传递方法;Windows Media 设备管理器验证参数后,将调用转发给服务提供商。
语法
HRESULT DeviceIoControl(
[in] DWORD dwIoControlCode,
[in] BYTE *lpInBuffer,
[in] DWORD nInBufferSize,
[out] BYTE *lpOutBuffer,
[in, out] LPDWORD pnOutBufferSize
);
parameters
[in] dwIoControlCode
要发送到设备的控制代码。 在 MTP 设备上调用此方法时,请使用 SDK 随附的 MtpExt.h 中定义的值IOCTL_MTP_CUSTOM_COMMAND。
[in] lpInBuffer
指向调用方提供的输入缓冲区的可选指针。 如果 nInBufferSize 为零,则它可以为 NULL。 在 MTP 设备上调用此方法时,可以传入 MTP_COMMAND_DATA_IN 结构。
[in] nInBufferSize
输入缓冲区的大小(以字节为单位)。 在 MTP 设备上调用此方法时,可以使用宏 SIZEOF_REQUIRED_COMMAND_DATA_IN 指定大小。
[out] lpOutBuffer
指向调用方提供的输出缓冲区的可选指针。 如果 pnOutBufferSize 指向值零,则它可以为 NULL。 在 MTP 设备上调用此方法时,可以传入 MTP_COMMAND_DATA_OUT 结构。
[in, out] pnOutBufferSize
输出缓冲区的大小(以字节为单位)。 调用返回时,它指定实际返回的字节数。 在 MTP 设备上调用此方法时,可以使用 MtpExt.h 中定义的宏 SIZEOF_REQUIRED_COMMAND_DATA_OUT 指定大小。此参数不能为 NULL。
返回值
该方法返回 HRESULT。 Windows Media 设备管理器 中的所有接口方法都可以返回以下任一类错误代码:
- 标准 COM 错误代码
- 转换为 HRESULT 值的 Windows 错误代码
- Windows Media 设备管理器错误代码
注解
此方法提供应用程序和服务提供商之间的专用通信模式。 然后,服务提供商可以处理此 IOCTL,根据需要对其进行修改,并将其传递给内核模式驱动程序。
与 IWMDMDevice::SendOpaqueCommand 相比,此方法更符合 DeviceIoControl Windows API,因为输出缓冲区由调用方提供。 此外,与 IWMDMDevice::SendOpaqueCommand 不同,此方法不涉及任何 MAC 检查,并且效率更高。
例如,此方法可用于将自定义媒体传输协议 (MTP) 命令发送到 MTP 设备。
要求
目标平台 | Windows |
标头 | mswmdm.h |
Library | Mssachlp.lib |