Vue d’ensemble de WdfFiTester
Vous pouvez configurer WdfFiTester pour qu’il échoue à tous les appels de fonction DDI (Device Driver Interface) KMDF qui retournent un code NTSTATUS. Il existe 190 fonctions fournies par le système dans KMDF version 1.11 qui retournent un code NTSTATUS. Pour obtenir la liste de ces fonctions, consultez Fonctions KMDF qui retournent des codes NSTATUS.
Le code qui gère un appel de fonction KMDF a généralement le modèle indiqué dans l’exemple de code suivant :
//
// Create the device object.
//
status = WdfDeviceCreate(
&DeviceInit,
&attributes,
&device
);
if (!NT_SUCCESS(status)) {
return status;
}
La fonction KMDF retourne un code NTSTATUS et le pilote vérifie le code de retour avant de continuer. Toutefois, de nombreux problèmes de pilote se produisent en raison d’une case activée manquante ou incorrecte pour le code de retour. Ces erreurs peuvent entraîner un comportement inattendu dans le pilote ou provoquer un bogue case activée.
Par exemple, un bogue case activée peut se produire si une fonction a un paramètre de pointeur (__out) qui est censé être valide à la sortie de la fonction, mais qui, à la place, a la valeur NULL. Le bogue case activée peut se produire si le pilote utilise le paramètre et si le pilote n’case activée pas correctement le status de retour à partir de l’appel de fonction.
Pour chaque DDI configuré pour l’injection d’erreur, l’outil WdfFiTester retourne un code NTSTATUS de STATUS_UNSUCCESSFUL. Le pilote est censé gérer la défaillance.
Étant donné que l’outil utilise l’interface WMI, vous pouvez l’exécuter à partir d’un script (vbscript ou jscript) ou de toute autre application en mode utilisateur (C, C++ ou C# ) qui peut effectuer des appels à WMI.
Outre d’autres opérations, l’interface WMI de l’outil vous permet d’obtenir la liste des DDIS qui ont été appelées par un pilote KMDF spécifique et qui attendent un événement WMI qui se déclenche chaque fois qu’une injection d’erreur DDI se termine correctement.