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

请参阅

IWMDMDevice3 接口

IWMDMDevice::SendOpaqueCommand