UsbDevice Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa um dispositivo USB. O objeto fornece métodos e propriedades que um aplicativo pode usar para enumerar dispositivos WinUSB e enviar transferências de controle IN e OUT.
public ref class UsbDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UsbDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UsbDevice : System.IDisposable
Public NotInheritable Class UsbDevice
Implements IDisposable
- Herança
- Atributos
- Implementações
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
|
Exemplos
Este código de exemplo mostra como obter o objeto UsbDevice especificando a ID do fornecedor/produto.
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
UInt32 vid = 0x045E;
UInt32 pid = 0x078F;
string aqs = UsbDevice.GetDeviceSelector(vid, pid);
var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(aqs, null);
if (myDevices.Count == 0)
{
ShowError("Device not found!");
return;
}
UsbDevice device = await UsbDevice.FromIdAsync(myDevices[0].Id);
// Send a control transfer.
UsbSetupPacket initSetupPacket = new UsbSetupPacket()
{
Request = initRequest,
RequestType = new UsbControlRequestType()
{
Recipient = UsbControlRecipient.DefaultInterface,
ControlTransferType = UsbControlTransferType.Vendor
}
};
await device.SendOutControlTransferAsync(initSetupPacket);
}
Comentários
Antes de obter uma referência ao objeto UsbDevice, você deve ter um destes identificadores:
- O fornecedor e os identificadores de produto para o dispositivo físico. Esses identificadores fazem parte da cadeia de caracteres de ID de hardware. Como alternativa, você pode derivar os identificadores da propriedade IDs de hardware no Gerenciador de Dispositivos. Por exemplo, se a ID de Hardware for
USB\VID_045E&PID_078E
, a ID do fornecedor será0x045E
e a ID do produto será0x078E
. - O GUID da interface do dispositivo. Você pode obter esse GUID da entrada do registro DeviceInterfaceGuids em: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\Usb\<Device Identifier>\\<>Instance DeviceParameters
- Os códigos de classe, subclasse e protocolo do dispositivo. Você pode obter essas informações da entrada do registro CompatibleIds , encontrada na chave Parâmetros do Dispositivo .
Para obter o objeto UsbDevice:
- Obtenha a cadeia de caracteres AQS (Sintaxe de Consulta Avançada) que contém critérios de pesquisa para localizar o dispositivo na coleção de dispositivos enumerados. Se você quiser pesquisar pela ID do fornecedor/ID do produto ou pelo GUID da interface do dispositivo, chame GetDeviceSelector. Se você quiser pesquisar pela classe de dispositivo, chame GetDeviceClassSelector. Ambas as chamadas recuperam cadeias de caracteres AQS formatadas.
- Passe a cadeia de caracteres recuperada para FindAllAsync. A chamada recupera um objeto DeviceInformationCollection .
- Passe o loop pela coleção. Cada iteração obtém um objeto DeviceInformation .
- Obtenha o valor da propriedade DeviceInformation.Id. O valor da cadeia de caracteres é o caminho da instância do dispositivo. Por exemplo,
\\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}
. - Chame FromIdAsync passando a cadeia de caracteres da instância do dispositivo e obtenha o objeto UsbDevice. Em seguida, você pode usar o objeto UsbDevice para executar outras operações, como enviar uma transferência de controle. Quando o aplicativo terminar de usar o objeto UsbDevice, o aplicativo deverá liberá-lo chamando Close.
Propriedades
Configuration |
Obtém um objeto que representa uma configuração USB, incluindo todas as interfaces e seus pontos de extremidade. |
DefaultInterface |
Obtém o objeto que representa o padrão ou a primeira interface em uma configuração USB. |
DeviceDescriptor |
Obtém o objeto que representa o descritor de dispositivo USB. |
Métodos
Close() |
Libera a referência ao objeto UsbDevice que foi obtido anteriormente chamando FromIdAsync. |
Dispose() |
Realiza tarefas definidas pelo aplicativo associadas à liberação ou à redefinição de recursos não gerenciados. |
FromIdAsync(String) |
Inicia uma operação assíncrona que cria um objeto UsbDevice . |
GetDeviceClassSelector(UsbDeviceClass) |
Obtém uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada) que o aplicativo pode passar para DeviceInformation.FindAllAsync para encontrar um tipo específico de dispositivo USB. |
GetDeviceSelector(Guid) |
Obtém uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada), com base no identificador GUID da interface do dispositivo, especificado pelo aplicativo. O aplicativo passa a cadeia de caracteres para DeviceInformation.FindAllAsync para encontrar um tipo específico de dispositivo USB. |
GetDeviceSelector(UInt32, UInt32) |
Obtém uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada), com base em identificadores de fornecedor e produto, especificados pelo aplicativo. O aplicativo passa a cadeia de caracteres para DeviceInformation.FindAllAsync para encontrar um tipo específico de dispositivo USB. |
GetDeviceSelector(UInt32, UInt32, Guid) |
Obtém uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada), com base em identificadores GUID de fornecedor, produto e interface do dispositivo, especificados pelo aplicativo. O aplicativo passa a cadeia de caracteres para DeviceInformation.FindAllAsync para encontrar um tipo específico de dispositivo USB. |
SendControlInTransferAsync(UsbSetupPacket) |
Inicia uma transferência de controle USB de comprimento zero que lê do ponto de extremidade de controle padrão do dispositivo. |
SendControlInTransferAsync(UsbSetupPacket, IBuffer) |
Inicia uma transferência de controle USB para receber dados do ponto de extremidade de controle padrão do dispositivo. |
SendControlOutTransferAsync(UsbSetupPacket) |
Inicia uma transferência de controle USB de comprimento zero que grava no ponto de extremidade de controle padrão do dispositivo. |
SendControlOutTransferAsync(UsbSetupPacket, IBuffer) |
Inicia uma transferência de controle USB para enviar dados para o ponto de extremidade de controle padrão do dispositivo. |