Freigeben über


SAL 2.0-Anmerkungen für Windows-Treiber

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

Beachten Sie Windows 8 SAL 2.0 einführt, das SAL 1.0 ersetzt. Informationen zu SAL 2.0 finden Sie unter Verwenden von SAL-Anmerkungen zum Reduzieren 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 des WDK für Windows 7 enthalten ist.

IRQL-Anmerkungen

Verwenden Sie die IRQL-Anmerkungen , um den Bereich der IRQL-Ebenen anzugeben, auf dem 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 Anmerkung, um das korrekte 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 das Codeanalysetool dabei zu unterstützen, die Verwendung von Gleitkommapunkten 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 anweisen, nach Missbrauch von DMA-Zeigern zu suchen.

Anmerkungen für ineinandergreifende Operanden

_Interlocked_operand_

Verwenden Sie die Anmerkungen für ineinandergreifende Operanden für Funktionsparameter, um sie als ineinandergreifende Operanden zu identifizieren. Eine Reihe von Funktionen verwendet als einen ihrer Parameter die Adresse einer Variablen, auf die mithilfe einer ineinandergreifenden Prozessoranweisung zugegriffen werden soll. Dies sind atomare Anweisungen zum Lesen durch den Cache, und wenn die Operanden falsch verwendet werden, treten sehr subtile Fehler auf.

Anmerkungen für Fahrerverteilungsroutinen

_Dispatch_type_

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

Rückruf _Flt_CompletionContext_Outptr_ Voroperation des Dateisystem-Minifilters

_Flt_CompletionContext_Outptr_

Verwenden Sie den Rückruf des Dateisystem-Minifilters vor dem Vorgang _Flt_CompletionContext_Outptr_ Anmerkung , wenn Sie Rückruffunktionen für den Vorabvorgang des Dateisystemminifilters PFLT_PRE_OPERATION_CALLBACK deklarieren.

Platzieren Sie diese Anmerkung im CompletionContext-Parameter. Diese Anmerkung weist das Codeanalysetool an, zu überprüfen, ob CompletionContext für den FLT_PREOP_CALLBACK_STATUS Rückgabewert korrekt ist.

Weitere Informationen

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