Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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-Flight (IFR)
In-Flight registratore (IFR) è supportato e può essere visualizzato tramite WDFKD, RCDRKD o con l'estensione del debugger ACXKD quando quest'ultima è disponibile. Per informazioni generali sull'uso dei log IFR, vedere Uso dell'Inflight Trace Recorder (IFR) nei driver KMDF e UMDF 2 e Video: Accesso ai log IFR del driver senza un debugger
ACX registra gli eventi chiave usando altri provider ETW per semplificare la visualizzazione di questi eventi speciali.
Aggiunta dei log al driver
I driver di terze parti sono fortemente incoraggiati a utilizzare anche gli 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 Toaster fornisce esempi di tracciamento WMI e codice di tracciamento riutilizzabile. Per ulteriori informazioni sul Toaster Sample Driver, vedere Driver di esempio Toaster.
Raccomandazioni per la registrazione del driver ACX
Per migliorare l'affidabilità del driver ACX, prendere in considerazione i seguenti comportamenti per il logging.
- 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" possono essere considerati per la registrazione dei log.
Uso delle estensioni del debugger di tracciamento 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
Riepilogo delle estensioni del debugger in Wdfkd.dll
Questa procedura dettagliata usa il driver audio Sysvad tradizionale, ma illustra alcune tecniche che possono essere utili per i driver ACX. Driver di Debug - Laboratorio passo a passo (modalità Sysvad kernel)
Guide video passo-passo
- Video: Debug del driver con il codice sorgente WDF
- Serie video: Debug di driver Kernel-Mode Driver Framework
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 a stack singolo e multi stack. L'estensione kd consente allo sviluppatore di esaminare le strutture ACX.
Per altre informazioni sul debug dei driver ACX e sull'uso dell'estensione del debugger AcxKd.dll, vedere !acxkd.