Freigeben über


SAL 2.0 Anmerkungen für Windows-Treiber

Die Microsoft Source Code Annotation Language (SAL) enthält Anmerkungen, die für die Analyse von Windows-Treibern und den zugehörigen Kernelcode spezifisch sind. Die Anmerkungssprache bietet eine Möglichkeit zum Beschreiben von Eigenschaften von Funktionen, Parametern, Rückgabewerten, Strukturen und Strukturfeldern. Anmerkungen sind wie Kommentare, die Sie ihrem Code hinzufügen und vom Compiler ignoriert werden, werden aber von den statischen Analysetools verwendet. Die Verwendung von Anmerkungen hilft, die Effektivität der Entwickler zu verbessern, die Genauigkeit der Ergebnisse aus statischer Analyse zu verbessern und ermöglicht es den Tools, besser zu bestimmen, ob ein bestimmter Fehler vorhanden ist. Die Treiberanmerkungen sind nicht für die Verwendung in nicht treiber- oder nicht kernelbezogenem Code vorgesehen. Die Treiberanmerkungen werden in Driverspecs.h definiert.

Anmerkung Windows 8 führt SAL 2.0 ein, das SAL 1.0 ersetzt. Informationen zu SAL 2.0 finden Sie unter Verwendung von SAL-Anmerkungen zur Reduzierung von C/C++-Codefehlern. SAL 2.0 ersetzt SAL 1.0. SAL 2.0 sollte mit dem Windows Driver Kit (WDK) 8 für Windows 8 verwendet werden. Wenn Sie Informationen zu SAL 1.0 für Treiber benötigen, lesen Sie die Dokumentation, die im Lieferumfang von WDK für Windows 7 enthalten ist.

IRQL-Anmerkungen

Verwenden Sie die IRQL-Anmerkungen , um den Bereich der IRQL-Ebenen anzugeben, auf denen eine Funktion ausgeführt werden soll. Die IRQL-Anmerkungen helfen dem Codeanalysetool, Fehler genauer zu finden.

_IRQL_requires_max_(value)

_IRQL_requires_min_(value)

_IRQL_raises_(value)

_IRQL_requires_(value)

_IRQL_raises_(value)

_IRQL_saves_

_IRQL_restores_

_IRQL_saves_global_(kind, param)

_IRQL_restores_global_(kind, param)

_IRQL_always_function_min_(value)

_IRQL_always_function_max_(value)

_IRQL_requires_same_

_IRQL_is_cancel_ – Verwenden Sie die _IRQL_is_cancel-Annotation, um das richtige Verhalten einer DRIVER_CANCEL-Rückruffunktion sicherzustellen.

Gleitkommaanmerkungen für Treiber

_Kernel_float_saved_

_Kernel_float_restored_

_Kernel_float_used_

Verwenden Sie die Gleitkommaanmerkungen für Treiber , um dem Codeanalysetool zu helfen, die Verwendung von Gleitkomma im Kernelmoduscode zu erkennen und Fehler zu melden, wenn der Gleitkommazustand nicht ordnungsgemäß geschützt ist.

DO_DEVICE_INITIALIZING Anmerkung

_Kernel_clear_do_init_

Verwenden Sie die DO_DEVICE_INITIALIZING Anmerkung , um anzugeben, ob die kommentierte Funktion das DO_DEVICE_INITIALIZING Bit im Feld "Flags" des Geräteobjekts löschen soll.

Kernel_IoGetDmaAdapter-Anmerkung

_Kernel_IoGetDmaAdapter_

Verwenden Sie die Kernel_IoGetDmaAdapter-Anmerkung, um die Codeanalysetools anzuleiten, nach Missbrauch von DMA-Zeigern zu suchen.

Anmerkungen für verriegelte Operanden

_Interlocked_operand_

Verwenden Sie die Anmerkungen für verriegelte Operanden für Funktionsparameter, um sie als verriegelte Operanden zu identifizieren. Eine Reihe von Funktionen verwendet als einen ihrer Parameter die Adresse einer Variablen, auf die mithilfe einer verriegelten Prozessoranweisung zugegriffen werden soll. Hierbei handelt es sich um zwischengespeicherte anweisungen zum Lesen von Atomen, und wenn die Operanden falsch verwendet werden, ergeben sich sehr subtile Fehler.

Annotationen für Treiberdispositionsroutinen

_Dispatch_type_

Verwenden Sie die Anmerkungen für Treiberversandroutinen , wenn Sie WDM-Treiberroutinen deklarieren. Weitere Informationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für WDM-Treiber und Kommentieren von Treiberverteilungsroutinen.

File System Minifilter Pre-Operation Callback _Flt_CompletionContext_Outptr_-Anmerkung

_Flt_CompletionContext_Outptr_

Verwenden Sie die Dateisystem-Minifilter-Pre-Operation-Rückruf _Flt_CompletionContext_Outptr_-Anmerkung, wenn Sie die Dateisystem-Minifilter-Rückruffunktionen PFLT_PRE_OPERATION_CALLBACK deklarieren.

Diese Anmerkung auf den Parameter CompletionContext platzieren. Diese Anmerkung weist das Code-Analyse-Tool an, zu überprüfen, ob der CompletionContext für den Rückgabewert FLT_PREOP_CALLBACK_STATUS korrekt ist.

Siehe auch

Verwenden von SAL-Anmerkungen zum Reduzieren von C/C++-Codefehlern