Übersicht über WdfFiTester
Sie können WdfFiTester so konfigurieren, dass alle KMDF-DDI-Funktionsaufrufe (Device Driver Interface) fehlschlagen, die einen NTSTATUS-Code zurückgeben. Es gibt 190 vom System bereitgestellte Funktionen in KMDF Version 1.11, die einen NTSTATUS-Code zurückgeben. Eine Liste dieser Funktionen finden Sie unter KMDF-Funktionen, die NSTATUS-Codes zurückgeben.
Der Code, der einen KMDF-Funktionsaufruf verarbeitet, weist in der Regel das im folgenden Codebeispiel gezeigte Muster auf:
//
// Create the device object.
//
status = WdfDeviceCreate(
&DeviceInit,
&attributes,
&device
);
if (!NT_SUCCESS(status)) {
return status;
}
Die KMDF-Funktion gibt einen NTSTATUS-Code zurück, und der Treiber sucht nach dem Rückgabecode, bevor er fortgesetzt wird. Viele Treiberprobleme treten jedoch aufgrund einer fehlenden oder falschen Überprüfung des Rückgabecodes auf. Diese Fehler können zu unerwartetem Verhalten im Treiber führen oder zu einer Fehlerüberprüfung führen.
Beispielsweise kann eine Fehlerprüfung auftreten, wenn eine Funktion über einen (__out) Zeigerparameter verfügt, der beim Beenden der Funktion gültig sein soll, stattdessen aber NULL ist. Die Fehlerüberprüfung kann auftreten, wenn der Treiber den -Parameter verwendet und der Treiber die Rückgabe status aus dem Funktionsaufruf nicht ordnungsgemäß überprüft.
Für jeden DDI, der für die Fehlerinjektion konfiguriert wurde, gibt das WdfFiTester-Tool einen NTSTATUS-Code von STATUS_UNSUCCESSFUL zurück. Es wird erwartet, dass der Treiber den Fehler behandelt.
Da das Tool die WMI-Schnittstelle verwendet, können Sie sie über ein Skript (vbscript oder jscript) oder eine beliebige andere Benutzermodusanwendung (C, C++ oder C# ) ausführen, die Aufrufe an WMI durchführen kann.
Abgesehen von anderen Vorgängen können Sie mit der WMI-Schnittstelle des Tools eine Liste der DDIs abrufen, die von einem bestimmten KMDF-Treiber aufgerufen wurden und auf ein WMI-Ereignis warten, das jedes Mal ausgelöst wird, wenn eine DDI-Fehlerinjektion erfolgreich abgeschlossen wurde.