Condividi tramite


Uso delle interfacce USB nei driver UMDF 1.x

Avviso

UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2.

Gli esempi di UMDF 1 archiviati sono disponibili nell'aggiornamento degli esempi di driver di Windows 11 versione 22H2 - Maggio 2022.

Per altre info, vedi Introduzione con UMDF.

Il framework rappresenta ogni interfaccia USB come oggetto interfaccia USB del framework. Quando un driver UMDF crea un oggetto dispositivo USB framework, il framework crea un oggetto interfaccia USB framework per ogni interfaccia USB supportata dal dispositivo.

La maggior parte dei dispositivi USB ha una sola interfaccia e l'interfaccia ha una sola impostazione alternativa. I driver per tali dispositivi in genere non devono usare i metodi oggetto definiti dall'oggetto interfaccia USB del framework.

Se un driver UMDF supporta dispositivi USB che forniscono più interfacce o impostazioni alternative, i metodi dell'oggetto interfaccia consentono al driver di:

Ottenere informazioni sull'interfaccia UMDF-USB

Dopo che un driver UMDF ha chiamato il metodo IWDFUsbTargetFactory::CreateUsbTargetDevice per creare un oggetto dispositivo di destinazione UMDF-USB, il driver può chiamare il metodo IWDFUsbTargetDevice::GetNumInterfaces per ottenere il numero di interfacce USB supportate dal dispositivo. Successivamente, il driver può effettuare chiamate al metodo IWDFUsbTargetDevice::RetrieveUsbInterface per ottenere puntatori alle interfacce IWDFUsbInterface che espongono le interfacce USB supportate dal dispositivo. Il driver può quindi chiamare i metodi seguenti che ogni oggetto interfaccia USB definisce per ottenere informazioni sull'interfaccia USB:

IWDFUsbInterface::GetInterfaceNumber
Ottiene il numero di interfaccia USB associato a un oggetto interfaccia USB.

IWDFUsbInterface::GetInterfaceDescriptor
Ottiene il descrittore di interfaccia USB associato a una delle impostazioni alternative di un'interfaccia USB.

IWDFUsbInterface::GetNumEndPoints
Ottiene il numero di endpoint (noti anche come pipe) associati a una delle impostazioni alternative di un'interfaccia USB.

IWDFUsbInterface::GetConfiguredSettingIndex
Ottiene un valore di indice che identifica l'impostazione alternativa attualmente selezionata per un'interfaccia USB.

IWDFUsbInterface::RetrieveUsbPipeObject
Recupera un puntatore all'interfaccia IWDFUsbTargetPipe che espone l'oggetto pipe del framework associato a un'interfaccia del dispositivo USB e a un indice pipe specificati.

IWDFUsbInterface::GetWinUsbHandle
Ottiene l'handle di interfaccia WinUsb associato a un'interfaccia USB.

Selezione di un'impostazione alternativa per un'interfaccia UMDF-USB

Il driver UMDF può chiamare il metodo IWDFUsbInterface::SelectSetting per selezionare un'impostazione alternativa per una delle interfacce USB supportate dal dispositivo.

Le impostazioni alternative del dispositivo devono essere numerate in modo contiguo, a partire da zero.

Importante La selezione di un'impostazione invalida tutte le informazioni sull'interfaccia e sugli endpoint. Pertanto, il driver deve ottenere di nuovo queste informazioni. Il driver deve anche rimuovere tutti gli oggetti pipe USB recuperati e ricreati in precedenza.