다음을 통해 공유


연동 피연산자용 드라이버 주석

대규모 함수 제품군은 연동 프로세서 명령을 사용하여 액세스해야 하는 변수의 주소를 매개 변수 중 하나로 사용합니다. 캐시 읽기-통과 원자성 명령이며 피연산자를 잘못 사용하면 매우 미묘한 버그가 발생합니다.

함수 매개 변수에 대해 다음 주석을 사용하여 연동 피연산자로 식별합니다.

연동 피연산자 주석 Description
_Interlocked_operand_ 주석이 추가된 함수 매개 변수는 연동 함수 중 하나의 대상 피연산자입니다. 해당 피연산자에는 특정 추가 속성이 있어야 합니다.

_Interlocked_operand_ 주석이 추가된 함수 매개 변수는 프로세스 간에 공유되어야 합니다. 이 주석에 사용되는 변수는 다음을 수행해야 합니다.

  • volatile로 선언됩니다 .

  • 지역 변수가 아닙니다. 지역 변수를 사용하는 것은 일반적으로 함수의 의도에 대한 오해를 나타냅니다. 지역 변수가 어떻게든 공유되더라도 시스템 페이징 요구 사항으로 다른 프로세스에서 변수를 해결하는 데 문제가 있습니다.

  • interlocked 함수를 제외하고 액세스할 수 없습니다. 연동 함수를 명시적으로 사용하지 않으면 작업이 부실 데이터에 액세스하거나, 단일 프로세서의 캐시에서만 발생하거나, 시스템의 나머지 부분에 도달하는 데 지연될 수 있습니다.

시스템 제공 함수는 이미 상호 잠긴 피연산자용으로 주석을 추가했습니다.

다음 예제에서는 InterlockedExchange 함수에 대한 주석을 보여줍니다. 이 주석은 Target 매개 변수가 항상 연동 작업을 사용하여 액세스되도록 지정합니다.

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

드라이버용 SAL 2.0 주석