Registrazione e debug di ACX
In questo argomento vengono fornite informazioni sulla registrazione, la traccia e il debug delle estensioni della classe audio ACX.
Registrazione driver ACX
La traccia software per i driver si basa in genere su Event Tracing for Windows (ETW), una funzionalità a livello di kernel che registra i messaggi di traccia sia per i processi in modalità kernel che per i processi in modalità utente. Poiché i driver ACX sono driver WDF, tutte le funzionalità di registrazione e eventi di WDF sono disponibili per gli sviluppatori di driver ACX.
WPP
Poiché ETW può essere piuttosto complicato da usare, la maggior parte degli sviluppatori di driver usa il preprocessore di traccia software Windows (WPP), che semplifica e migliora il processo di strumentazione di un driver per la traccia ETW.
ACX usa i log WPP per la traccia e il debug. Per altre informazioni, vedere Uso della traccia software WPP nei driver KMDF e Aggiunta di traccia software WPP a un driver Windows.
Registratore in volo (IFR)
Il registratore in anteprima (IFR) è supportato e può essere visualizzato tramite WDFKD, RCDRKD o con l'estensione del debugger ACXKD quando è disponibile. Per informazioni generali sull'uso dei log IFR, vedere Using Inflight Trace Recorder (IFR) in KMDF and UMDF 2 Drivers and Video: Access driver IFR logs without a debugger
ACX registra gli eventi chiave usando altri provider ETW per semplificare la visualizzazione di questi eventi speciali.
Aggiunta della registrazione al driver
I driver di terze parti sono invitati a usare anche eventi WPP ed ETW.
Questo codice di esempio mostra il controllo di un valore restituito e la registrazione di un errore appropriato.
//
// The driver uses this DDI to delete the circuits from the current device.
//
status = AcxDeviceRemoveCircuit(Device, devCtx->Speaker);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove speaker circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->MicArray);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove micarray circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->SpeakerHp);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove speakerHp circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->MicrophoneHp);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove microphoneHp circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->HDMI);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove HDMI circuit, continuing with ReleaseHardware, %!STATUS!", status); }
La versione in primo piano del codice di esempio del driver Tostapane fornisce esempi di traccia WMI e codice di traccia riutilizzabile. Per altre informazioni sull'esempio di tostapane, vedere Driver di esempio di tostapane.
Consigli per la registrazione del driver ACX
Per migliorare l'affidabilità del driver ACX, prendere in considerazione i comportamenti seguenti per la registrazione.
- Valori restituiti imprevisti dall'I/O del buffer di flusso o da altre normali attività di elaborazione dei segnali.
- Stati di alimentazione imprevisti o transizioni di stato di alimentazione.
- Errori relativi alle chiamate effettuate durante gli aggiornamenti o la ripetizione dell'installazione.
- Altri comportamenti che potrebbero portare a "nessun audio" potrebbero essere considerati per la registrazione.
Uso delle estensioni del debugger di traccia WMI
Per visualizzare gli eventi di traccia nel debugger, usare l'estensione WMI Wmitrace.dll. Contiene una libreria di funzioni progettate per controllare e visualizzare la traccia degli eventi WMI. Per altre informazioni, vedere Estensioni di traccia WMI (Wmitrace.dll).
Debug del driver ACX
I driver ACX sono driver WDF, quindi le tecniche di debug descritte per i driver WDF si applicano ai driver ACX. Per informazioni sul debug dei driver WDF, vedere gli argomenti seguenti.
Informazioni generali sugli strumenti di debug
Strumenti di debug per Windows (WinDbg, KD, CDB, NTSD)
Debug kmdf
Questa procedura dettagliata usa il driver audio Sysvad tradizionale, ma illustra alcune tecniche che possono essere utili per i driver ACX. Driver di debug - Step by Step Lab (modalità kernel Sysvad)
Procedure dettagliate video
- Video: Debug del driver con il codice sorgente WDF
- Serie video: Debug dei driver del framework driver in modalità kernel
Libreria di estensioni del debugger del kernel ACX (AcxKd.dll)
Per facilitare il debug, ACX dispone di una libreria di estensioni del debugger del kernel complementare (AcxKd.dll). Questa libreria consente agli sviluppatori di tenere traccia del problema su percorsi audio singoli e multistack. L'estensione kd consente allo sviluppatore di esaminare le strutture ACX.
Nota
Questa estensione del debugger è in fase di sviluppo e le informazioni verranno fornite qui quando è disponibile.