Condividi tramite


Metodo IWDFDevice3::CreateInterrupt (wudfddi.h)

[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. Per altre informazioni, vedi Introduzione a UMDF.]

Il metodo CreateInterrupt crea un oggetto interrupt del framework.

Sintassi

HRESULT CreateInterrupt(
  [in]  PWUDF_INTERRUPT_CONFIG Configuration,
  [out] IWDFInterrupt          **ppInterrupt
);

Parametri

[in] Configuration

Puntatore a una struttura WUDF_INTERRUPT_CONFIG inizializzata da una chiamata alla macro WUDF_INTERRUPT_CONFIG_INIT.

[out] ppInterrupt

Puntatore a un buffer che riceve un puntatore all'interfaccia IWDFInterrupt per il nuovo oggetto interrupt.

Valore restituito

Il metodo restituisce S_OK se l'operazione ha esito positivo. In caso contrario, questo metodo restituisce uno dei codici di errore definiti in Winerror.h.

Osservazioni

Il driver deve chiamare CreateInterrupt una volta per ogni vettore di interrupt richiesto dal dispositivo. Se il dispositivo supporta interrupt con segnale di messaggio ,il driver deve creare un oggetto interrupt per ogni messaggio che il dispositivo può supportare.

I driver chiamano in genere il metodo CreateInterrupt da una funzione di callback onDeviceAdd , ma può anche chiamare questo metodo da IPnpCallbackHardware2::OnPrepareHardware.

Dopo che il gestore Plug and Play (PnP) assegna le risorse di sistema al dispositivo, il framework archivia le informazioni sulle risorse di interrupt assegnate del dispositivo negli oggetti interrupt creati dal driver. I driver che non supportano Plug and Play non possono usare oggetti interrupt.

Il sistema potrebbe non assegnare tutte le risorse di interrupt supportate da un dispositivo. Ad esempio, un driver crea otto oggetti interrupt per un dispositivo in grado di supportare otto messaggi MSI. Tuttavia, il sistema potrebbe assegnare un solo messaggio al dispositivo. In tal caso, sette degli oggetti interrupt verranno inutilizzati.

In genere, il driver deve archiviare informazioni specifiche dell'interrupt, ad esempio il contenuto copiato dei registri di interrupt del dispositivo, nello spazio di contesto dell'oggetto interrupt. Un driver chiama IWDFObject::AssignContext per registrare un contesto e richiedere una notifica quando l'oggetto non è valido.

UMDF supporta gli interrupt attivati a livello a partire da Windows 8. Se un driver in esecuzione in un sistema operativo precedente a Windows 8 crea un interrupt attivato a livello in OnDeviceAdd, CreateInterrupt ha esito positivo perché il sistema operativo non ha ancora assegnato risorse. Tuttavia, quando il framework tenta di connettere l'interrupt in un secondo momento, il dispositivo non viene avviato.

Per altre informazioni sulla gestione degli interrupt nei driver UMDF, vedere Accesso all'hardware e alla gestione degli interrupt.

Esempi

HRESULT  hr;
IWDFInterrupt* pInterrupt;
WUDF_INTERRUPT_CONFIG  interruptConfig;

WUDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
                           MyInterruptIsr,
                           MyInterruptWorkItem);

hr = pDevice->Create(&interruptConfig, 
                     &pInterrupt);

Fabbisogno

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
piattaforma di destinazione Desktop
versione minima di UMDF 1.11
intestazione wudfddi.h
dll WUDFx.dll

Vedere anche

IWDFDevice3

WUDF_INTERRUPT_CONFIG

WUDF_INTERRUPT_CONFIG_INIT