SAL 2.0-s széljegyzetek Windows-illesztőprogramokhoz

A Microsoft Source Code Annotation Language (SAL) olyan széljegyzeteket tartalmaz, amelyek a Windows-illesztőprogramok elemzésére és a kapcsolódó kernelkódra vonatkoznak. A széljegyzetnyelv lehetővé teszi a függvények, paraméterek, visszaadott értékek, struktúrák és struktúramezők tulajdonságainak leírását. A széljegyzetek olyanok, mint a kódhoz hozzáadott megjegyzések, amelyeket a fordító figyelmen kívül hagy, de a statikus elemzőeszközök használják. A széljegyzetek használata javítja a fejlesztői hatékonyságot, javítja a statikus elemzés eredményeinek pontosságát, és lehetővé teszi az eszközök számára, hogy jobban megállapítsák, létezik-e egy adott hiba. Az illesztőprogram-széljegyzetek nem használhatók nem illesztőprogramhoz vagy nem kernelhez kapcsolódó kódban. Az illesztőprogram-széljegyzetek az Driverspecs.h fájlban vannak definiálva.

Jegyzet A Windows 8 bevezeti az SAL 2.0-t, amely az SAL 1.0-t helyettesíti. Az SAL 2.0-ról további információt a C/C++ kódhibák csökkentésére szolgáló SAL-széljegyzetek használata című témakörben talál. Az SAL 2.0 az SAL 1.0 helyére lép. Az SAL 2.0-t a Windows 8-hoz készült Windows Driver Kit (WDK) 8-hoz kell használni. Ha az SAL 1.0-val kapcsolatos információkra van szüksége a vezetők számára, tekintse meg a Windows 7-hez készült WDK-t tartalmazó dokumentációt.

IRQL-széljegyzetek

Az IRQL-széljegyzetekkel megadhatja az IRQL-szintek tartományát, amelyeken egy függvénynek futnia kell. Az IRQL-széljegyzetek segítenek a kódelemző eszköznek a hibák pontosabb megtalálásában.

_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_ – A _IRQL_is_cancel széljegyzet használatával biztosíthatja a DRIVER_CANCEL visszahívási függvények helyes viselkedését.

Lebegőpontos széljegyzetek illesztőprogramokhoz

_Kernel_float_saved_

_Kernel_float_restored_

_Kernel_float_used_

Az illesztőprogramok lebegőpontos széljegyzeteinek használatával segít a kódelemző eszköznek észlelni a lebegőpontos függvény kernel módú kódban való használatát, és hibajelentést végezni, ha a lebegőpontos állapot nincs megfelelően védve.

DO_DEVICE_INITIALIZING széljegyzet

_Kernel_clear_do_init_

A DO_DEVICE_INITIALIZING annotáció használatával adja meg, hogy az annotált függvény várhatóan törli-e a DO_DEVICE_INITIALIZING bitet az eszközobjektum Flags mezőjében.

Kernel_IoGetDmaAdapter széljegyzet

_Kernel_IoGetDmaAdapter_

A Kernel_IoGetDmaAdapter széljegyzet használatával utasíthatja a kódelemzési eszközöket a DMA-mutatókkal való visszaélés keresésére.

Széljegyzetek egymáshoz kapcsolt operandusokhoz

_Interlocked_operand_

A függvényparaméterek összekapcsolt operandusainak széljegyzetei segítségével azonosíthatja őket egymáshoz kapcsolt operandusként. Számos függvény az egyik paramétere egy változó címe, amelyet egy összekapcsolt processzorutasítással kell elérni. Ezek a gyorsítótár átolvasási atomi utasításai, és ha az operandusokat helytelenül használják, nagyon finom hibákat eredményeznek.

Széljegyzetek az illesztőprogram-küldési rutinokhoz

_Dispatch_type_

A WDM-illesztőprogram-küldési rutinok deklarálásakor használja az illesztőprogram-küldési rutinok megjegyzéseit . További információ: Függvények deklarálása a WDM-illesztőprogramok függvényszerepkör-típusaival és az illesztőprogram-küldési rutinok megjegyzésével.

File System Minifilter előtti művelet-visszahívás _Flt_CompletionContext_Outptr_ annotáció

_Flt_CompletionContext_Outptr_

A fájlrendszer miniszűrő előművelet visszahívási függvényeinek PFLT_PRE_OPERATION_CALLBACK deklarálásakor használja a File System Minifilter pre-operation callback _Flt_CompletionContext_Outptr_ annotációt.

Helyezze ezt a megjegyzést a CompletionContext paraméterre. Ez a megjegyzés arra utasítja a kódelemző eszközt, hogy ellenőrizze, hogy a CompletionContext helyes-e a FLT_PREOP_CALLBACK_STATUS visszatérési értékhez.

Lásd még

C/C++ kódhibák csökkentése SAL-széljegyzetek használatával