Método IWMDMDevice3::D eviceIoControl (mswmdm.h)
O método DeviceIoControl envia um código IOCTL (Controle de E/S do Dispositivo) para o dispositivo. Este é um método de passagem; O Windows Media Gerenciador de Dispositivos apenas encaminha a chamada para o provedor de serviços depois de validar os parâmetros.
Sintaxe
HRESULT DeviceIoControl(
[in] DWORD dwIoControlCode,
[in] BYTE *lpInBuffer,
[in] DWORD nInBufferSize,
[out] BYTE *lpOutBuffer,
[in, out] LPDWORD pnOutBufferSize
);
Parâmetros
[in] dwIoControlCode
Controlar o código a ser enviado para o dispositivo. Ao chamar esse método em um dispositivo MTP, use o valor IOCTL_MTP_CUSTOM_COMMAND definido em MtpExt.h incluído no SDK.
[in] lpInBuffer
Ponteiro opcional para um buffer de entrada fornecido pelo chamador. Ele poderá ser NULL se nInBufferSize for zero. Ao chamar esse método em um dispositivo MTP, você pode passar a estrutura MTP_COMMAND_DATA_IN .
[in] nInBufferSize
Tamanho do buffer de entrada, em bytes. Ao chamar esse método em um dispositivo MTP, você pode usar a macro SIZEOF_REQUIRED_COMMAND_DATA_IN para especificar o tamanho.
[out] lpOutBuffer
Ponteiro opcional para o buffer de saída fornecido pelo chamador. Ele poderá ser NULL se pnOutBufferSize apontar para um valor igual a zero. Ao chamar esse método em um dispositivo MTP, você pode passar a estrutura MTP_COMMAND_DATA_OUT .
[in, out] pnOutBufferSize
Tamanho do buffer de saída, em bytes. Quando a chamada retorna, ela especifica o número de bytes realmente retornados. Ao chamar esse método em um dispositivo MTP, você pode usar a macro SIZEOF_REQUIRED_COMMAND_DATA_OUT definida em MtpExt.h para especificar o tamanho. Esse parâmetro não pode ser NULL.
Valor retornado
O método retorna um HRESULT. Todos os métodos de interface no Windows Media Gerenciador de Dispositivos podem retornar qualquer uma das seguintes classes de códigos de erro:
- Códigos de erro COM padrão
- Códigos de erro do Windows convertidos em valores HRESULT
- Códigos de erro do Windows Media Gerenciador de Dispositivos
Comentários
Esse método fornece um modo privado de comunicação entre o aplicativo e o provedor de serviços. O provedor de serviços pode processar esse IOCTL, opcionalmente modificá-lo e passá-lo para o driver do modo kernel.
Em comparação com IWMDMDevice::SendOpaqueCommand, esse método se alinha melhor com a API do Windows DeviceIoControl porque o buffer de saída é fornecido pelo chamador. Além disso, ao contrário de IWMDMDevice::SendOpaqueCommand, esse método não envolve nenhuma marcar MAC e é mais eficiente.
Esse método pode ser usado, por exemplo, para enviar comandos mtp personalizados para um dispositivo MTP.
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | mswmdm.h |
Biblioteca | Mssachlp.lib |