Poznámky SAL 2.0 pro ovladače Windows

Jazyk SAL (Source Code Annotation Language) obsahuje poznámky specifické pro analýzu ovladačů systému Windows a souvisejícího kódu jádra. Jazyk poznámek poskytuje způsob popisu vlastností funkcí, parametrů, návratových hodnot, struktur a polí struktury. Poznámky jsou podobné komentářům, které přidáte do kódu, a kompilátor je ignoruje, ale používají se nástroji pro statickou analýzu. Použití poznámek pomáhá zlepšit efektivitu vývojářů, pomáhá zlepšit přesnost výsledků ze statické analýzy a umožňuje nástrojům lépe určit, jestli určitá chyba existuje. Poznámky ovladačů nejsou určeny k použití v kódu, který nesouvisí s ovladači nebo s jádrem. Poznámky k ovladačům jsou definovány v souboru Driverspecs.h.

Poznámka Systém Windows 8 zavádí sal 2.0, který nahrazuje SAL 1.0. Informace o SAL 2.0 naleznete v tématu Použití poznámek SAL ke snížení vad kódu C/C++. SAL 2.0 nahrazuje SAL 1.0. SAL 2.0 by se měl používat se sadou Windows Driver Kit (WDK) 8 pro Windows 8. Pokud potřebujete informace o sal 1.0 pro ovladače, přečtěte si dokumentaci, která je dodávána s WDK pro Windows 7.

Poznámky IRQL

Pomocí poznámek IRQL určete rozsah úrovní IRQL, na kterých má funkce běžet. Poznámky IRQL pomáhají nástroji pro analýzu kódu přesněji najít chyby.

_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_ - Pomocí _IRQL_is_cancel poznámky můžete zajistit správné chování funkce zpětného volání DRIVER_CANCEL.

Anotace s plovoucí desetinnou čárkou pro ovladače

_Kernel_float_saved_

_Kernel_float_restored_

_Kernel_float_used_

Pomocí poznámek s plovoucí desetinnou čárkou pro ovladače můžete nástroj pro analýzu kódu použít k detekci použití plovoucí desetinné čárky v kódu v režimu jádra a hlásit chyby, pokud stav plovoucí desetinné čárky není správně chráněn.

DO_DEVICE_INITIALIZING poznámky

_Kernel_clear_do_init_

Pomocí DO_DEVICE_INITIALIZING poznámky určete, jestli se očekává, že funkce s poznámkami vymaže DO_DEVICE_INITIALIZING bit v poli Flags objektu zařízení.

Kernel_IoGetDmaAdapter poznámky

_Kernel_IoGetDmaAdapter_

Pomocí Kernel_IoGetDmaAdapter poznámky nasměrujte nástroje pro analýzu kódu tak, aby hledaly zneužití ukazatelů DMA.

Poznámky pro synchronizované operandy

_Interlocked_operand_

Pomocí poznámek pro vzájemně uzamčené operandy pro parametry funkce je identifikujte jako vzájemně uzamčené operandy. Řada funkcí bere jako jeden z jejich parametrů adresu proměnné, ke které se má přistupovat pomocí instrukce pro interlockovaný procesor. Jedná se o atomické instrukce pro čtení do mezipaměti a pokud se operandy používají nesprávně, jsou výsledkem velmi drobných chyb.

Poznámky pro rutiny odesílání ovladačů

_Dispatch_type_

Pokud deklarujete rutiny odesílání ovladačů WDM, použijte poznámky pro rutiny pro odesílání ovladačů WDM. Další informace naleznete v tématu Deklarování funkcí pomocí typů rolí funkcí pro ovladače WDM a přidávání poznámek rutin odesílání ovladačů.

Minifiltr systému souborů před operací zpětného volání _Flt_CompletionContext_Outptr_ poznámky

_Flt_CompletionContext_Outptr_

Když deklarujete funkce zpětného volání před operací minifiltru systému souborů jako PFLT_PRE_OPERATION_CALLBACK, použijte anotaci _Flt_CompletionContext_Outptr_ minifiltru souborového systému.

Tuto poznámku umístěte na parametr CompletionContext. Tato anotace nasměruje nástroj pro analýzu kódu ke kontrole, zda je CompletionContext správný pro návratovou hodnotu FLT_PREOP_CALLBACK_STATUS.

Viz také

Použití poznámek SAL k snížení míry výskytu závad kódu C/C++