Poznámky k řízení pro zamčené operandy

Velká řada funkcí přebírá jako jeden ze svých 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.

K identifikaci parametrů funkce jako vzájemně uzamčeného operandu použijte následující poznámku.

Anotace uzamčeného operandu Popis
_Interlocked_operand_ Parametr funkce s poznámkami je cílový operand jedné z vzájemně uzamčených funkcí. Tyto operandy musí mít specifické další vlastnosti.

Očekává se, že parametry funkce anotované s _Interlocked_operand_ budou sdíleny mezi procesy. Proměnné použité s touto poznámkou musí:

  • Deklarovat nestálou.

  • Nejedná se o místní proměnnou. Použití místní proměnné obvykle značí nedorozumění záměru funkce. I když je nějak sdílená místní proměnná, požadavky na stránkování systému ztěžují adresování proměnných v jiném procesu.

  • Nesmí být přístupná, ledaže pomocí vzájemně zablokované funkce. Bez explicitního použití zamčené funkce může operace přistupovat k zastaralým datům, může probíhat pouze v cache paměti jednoho procesoru nebo může být zpožděna při propagaci do zbytku systému.

Systémové funkce jsou již opatřeny poznámkami pro vzájemně uzamčené operandy.

Následující příklad ukazuje anotaci pro funkci InterlockedExchange . Tato poznámka určuje, že parametr Target musí být vždy přístupný pomocí vzájemně uzamčené operace.

LONG  
InterlockedExchange (  
    _Inout_ _Interlocked_operand_ LONG volatile *Target,  
    _In_ LONG Value  
    );  

Poznámky SAL 2.0 pro ovladače