Partilhar via


Registro e depuração do ACX

Este tópico fornece informações sobre registo, rastreamento e depuração das extensões de classe de áudio ACX.

Registo de logs do driver ACX

O rastreamento de software para drivers geralmente é baseado no Event Tracing for Windows (ETW), um recurso de nível de kernel que registra mensagens de rastreamento para processos de modo kernel e modo de usuário. Como os drivers ACX são drivers WDF, todos os recursos de registro e eventos do WDF estão disponíveis para desenvolvedores de drivers ACX.

WPP

Como o ETW pode ser um pouco complicado de usar, a maioria dos desenvolvedores de drivers usa o pré-processador de rastreamento de software (WPP) do Windows, que simplifica e aprimora o processo de instrumentação de um driver para rastreamento ETW.

O ACX usa registos WPP para rastreamento e depuração. Para obter mais informações, consulte Usando o rastreamento de software WPP em drivers KMDF e Adicionando rastreamento de software WPP a um driver do Windows.

Gravador In-Flight (IFR)

In-Flight gravador (IFR) é suportado e pode ser visualizado via WDFKD, RCDRKD ou com a extensão do depurador ACXKD quando estiver disponível. Para obter informações gerais sobre como trabalhar com logs IFR, consulte Usando o IFR (Inflight Trace Recorder) em drivers KMDF e UMDF 2 eVídeo: Acessando logs IFR do driver sem um depurador

O ACX registra eventos-chave usando outros provedores ETW para simplificar a visualização desses eventos especiais.

Adicionar log ao seu driver

Os drivers de terceiros são altamente encorajados a também usar eventos WPP e ETW.

Este código de exemplo mostra a verificação de um valor de retorno e o registro de um erro apropriado.


    //
    // 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); }

A versão em destaque do código de exemplo do driver Toaster fornece exemplos de rastreamento WMI, bem como código de rastreamento reutilizável. Para mais informações sobre o exemplo do driver Toaster, consulte Driver de exemplo Toaster.

Recomendações para o registro em log do driver ACX

Para melhorar a confiabilidade do driver ACX, considere os seguintes comportamentos para registo de eventos.

  • Valores de retorno inesperados do buffer de E/S do fluxo ou de outra ação regular de processamento de sinais.
  • Estados de energia inesperados ou transições de estado de energia.
  • Erros relacionados a chamadas feitas durante atualizações ou reinstalação.
  • Outros comportamentos que podem levar à "ausência de áudio" podem ser considerados para o registro.

Usando as extensões do depurador de rastreio WMI

Para exibir eventos de rastreio no depurador, use a extensão WMI Wmitrace.dll. Ele contém uma biblioteca de funções projetadas para controlar e visualizar o rastreamento de eventos WMI. Para obter mais informações, consulte Extensões de rastreamento WMI (Wmitrace.dll).

Depuração do driver ACX

Os drivers ACX são drivers WDF, portanto, as técnicas de depuração descritas para drivers WDF se aplicam aos drivers ACX. Consulte os tópicos a seguir para obter informações sobre como depurar drivers WDF.

Informações gerais sobre as ferramentas de depuração

Ferramentas de depuração para Windows (WinDbg, KD, CDB, NTSD)

Depuração KMDF

Vídeo Passo a passo

Biblioteca de extensão do depurador do kernel ACX (AcxKd.dll)

Para ajudar na depuração, o ACX tem uma biblioteca associada de extensão do depurador do kernel (AcxKd.dll). Esta biblioteca ajuda os desenvolvedores a localizar problemas em percursos de áudio em pilhas únicas e múltiplas. A extensão kd permite que o desenvolvedor olhe para dentro das estruturas ACX.

Para obter mais informações sobre como depurar drivers ACX e trabalhar com a extensão do depurador AcxKd.dll, consulte !acxkd.

Ver também

Visão geral das extensões de classe de áudio ACX

Resumo dos objetos ACX