Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A verificação do driver usando a opção de comando /scan é opcional. Se você não escanear antes de verificar o driver, o SDV escaneia as declarações de tipos de função e cria um arquivo Sdv-map.h quando verifica o driver.
Durante essa verificação, o SDV tenta detetar os pontos de entrada do driver necessários para verificar o driver. Ele registra os resultados da verificação em Sdv-map.h, um arquivo que cria no diretório de códigos-fonte do driver.
No entanto, é muito importante que reveja este arquivo, seja após a etapa de digitalização ou após a verificação, para garantir que o SDV detectou os pontos de entrada corretos. Se os pontos de entrada estiverem ausentes ou errados, a verificação pode não ser confiável. Mais importante ainda, se o SDV não puder detetar nenhum ponto de entrada, ele não poderá verificar o driver.
Você só tem que digitalizar uma vez para cada motorista. Depois disso, o SDV retém o arquivo Sdv-map.h para o driver para verificações futuras.
Examine o arquivo Sdv-map.h
Depois de executar um comando de verificação ou verificar o driver, abra o arquivo Sdv-map.h e examine o arquivo. Sdv-map.h é um arquivo de texto formatado. Você pode lê-lo em qualquer editor de texto, como o Bloco de Notas.
Compare o conteúdo do arquivo Sdv-map.h com os tipos de função declarados para seu driver. Examine o conteúdo do arquivo Sdv-map.h para ver se as rotinas de retorno de chamada ou despacho do motorista foram corretamente identificadas.
O arquivo Sdv-map.h não é necessário para listar todos os pontos de entrada em seu driver; apenas os pontos de entrada para os códigos de função principais IRP ou tipos de função que são usados na análise. Não adicione códigos de função principais IRP ou tipos de função ao arquivo.
Para obter informações detalhadas sobre o arquivo Sdv-map.h, consulte Sdv-map.h. O formato é descrito em Formato do arquivo Sdv-map.h. Os erros que podem aparecer no arquivo Sdv-map.h são descritos em Aprovação do arquivo Sdv-map.h.
O exemplo a seguir mostra o conteúdo do arquivo Sdv-map.h do Fail_driver1, um driver WDM de exemplo no diretório tools\sdv\samples\fail_drivers\wdm.
//Approved=false
//DriverAddDevice
#define fun_AddDevice DriverAddDevice
//DriverEntry
#define fun_DriverEntry DriverEntry
//DriverUnload
#define fun_DriverUnload DriverUnload
//CompletionRoutine
#define fun_IO_COMPLETION_ROUTINE_1 CompletionRoutine
//DpcForIsrRoutine
#define fun_IO_DPC_ROUTINE_1 DpcForIsrRoutine
//DispatchCreate
#define fun_IRP_MJ_CREATE DispatchCreate
//DispatchPnp
#define fun_IRP_MJ_PNP DispatchPnp
//DispatchPower
#define fun_IRP_MJ_POWER DispatchPower
//DispatchRead
#define fun_IRP_MJ_READ DispatchRead
//DispatchSystemControl
#define fun_IRP_MJ_SYSTEM_CONTROL DispatchSystemControl
//InterruptServiceRoutine
#define fun_KSERVICE_ROUTINE_1 InterruptServiceRoutine
Corrija o arquivo Sdv-map.h
Antes de verificar um driver, corrija quaisquer erros no arquivo Sdv-map.h. O SDV verificará um driver, mesmo que o arquivo Sdv-map.h esteja incorreto ou não seja aprovado, mas os resultados da verificação podem não ser confiáveis. Por exemplo, se você não declarar a rotina de despacho ou retorno de chamada de um driver usando o tipo de função correspondente, a rotina do driver não aparecerá no arquivo Sdv-map.h. Consequentemente, você pode deixar de encontrar defeitos em seu código porque o SDV considera as regras que usam tipos de função como não aplicáveis, mesmo que você tenha especificado essas regras como parte da verificação.
Para corrigir um arquivo Sdv-map.h, certifique-se de que as rotinas de despacho ou retorno de chamada do driver sejam declaradas usando os tipos de função apropriados. Em seguida, verifique novamente o driver e verifique se eles aparecem no arquivo Sdv-map.h.
Aprovar o arquivo Sdv-map.h
Depois de determinar que o arquivo Sdv-map.h está correto, você pode aprovar o arquivo. Se você não fez nenhuma alteração no arquivo, não é necessário aprová-lo.
SDV verificará um driver mesmo se o arquivo Sdv-map.h não for aprovado.
Para aprovar o arquivo Sdv-map.h, na primeira linha do arquivo, altere:
//Approved=false
Para:
//Approved=true
Você só precisa aprovar o arquivo Sdv-map.h uma vez para cada driver. Depois disso, o SDV retém o arquivo Sdv-map.h aprovado para o driver para verificações futuras. Se tu quiseres que o SDV examine o teu código-fonte novamente para declarações de tipo de função, basta excluir o arquivo.
O exemplo a seguir mostra o arquivo Sdv-map.h aprovado para o driver de exemplo KMDF, Fail_Driver1. O SDV usa o arquivo Sdv-map.h para mapear as funções de retorno de chamada declaradas do driver com os tipos de função que o SDV precisa para verificação.
//Approved=true
//DriverEntry
#define fun_DriverEntry DriverEntry
//EvtDriverDeviceAdd
#define fun_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd
//EvtIoDeviceControl
#define fun_WDF_IO_QUEUE_IO_DEVICE_CONTROL EvtIoDeviceControl
//EvtIoInternalDeviceControl
#define fun_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl
//EvtIoRead
#define fun_WDF_IO_QUEUE_IO_READ EvtIoRead
//EvtRequestCancel
#define fun_WDF_REQUEST_CANCEL_1 EvtRequestCancel