Windows 드라이버용 SAL 2.0 주석

MICROSOFT SAL(소스 코드 주석 언어)에는 Windows 드라이버 및 관련 커널 코드 분석과 관련된 주석이 포함되어 있습니다. 주석 언어는 함수, 매개 변수, 반환 값, 구조체 및 구조 필드의 속성을 설명하는 방법을 제공합니다. 주석은 코드에 추가하는 주석과 같으며 컴파일러에서 무시되지만 정적 분석 도구에서 사용됩니다. 주석을 사용하면 개발자의 효율성을 향상시키고, 정적 분석에서 결과의 정확도를 향상시키며, 도구가 특정 버그가 있는지 더 잘 확인할 수 있습니다. 드라이버 주석은 드라이버가 아닌 코드 또는 커널 관련 코드가 아닌 코드에서 사용할 수 없습니다. 드라이버 주석은 Driverspecs.h에 정의되어 있습니다.

참고 Windows 8 SAL 1.0을 대체하는 SAL 2.0을 소개합니다. SAL 2.0에 대한 자세한 내용은 SAL 주석을 사용하여 C/C++ 코드 결함 줄이기를 참조하세요. SAL 2.0은 SAL 1.0을 대체합니다. SAL 2.0은 Windows 8 WDK(Windows 드라이버 키트) 8과 함께 사용해야 합니다. 드라이버용 SAL 1.0에 대한 정보가 필요한 경우 Windows 7용 WDK와 함께 제공되는 설명서를 참조하세요.

IRQL 주석

IRQL 주석을 사용하여 함수가 실행되어야 하는 IRQL 수준 범위를 지정합니다. IRQL 주석은 코드 분석 도구가 오류를 보다 정확하게 찾는 데 도움이 됩니다.

_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_ - _IRQL_is_cancel 주석을 사용하여 DRIVER_CANCEL 콜백 함수의 올바른 동작을 보장합니다.

드라이버에 대한 부동 소수점 주석

_Kernel_float_saved_

_Kernel_float_restored_

_Kernel_float_used_

드라이버에 대한 부동 소수점 주석을 사용하여 코드 분석 도구가 커널 모드 코드에서 부동 소수점 사용을 감지하고 부동 소수점 상태가 제대로 보호되지 않은 경우 오류를 보고할 수 있습니다.

DO_DEVICE_INITIALIZING 주석

_Kernel_clear_do_init_

DO_DEVICE_INITIALIZING 주석을 사용하여 주석이 추가된 함수가 디바이스 개체의 Flags 필드에서 DO_DEVICE_INITIALIZING 비트를 지울지 여부를 지정합니다.

Kernel_IoGetDmaAdapter 주석

_Kernel_IoGetDmaAdapter_

Kernel_IoGetDmaAdapter 주석을 사용하여 코드 분석 도구에 DMA 포인터의 오용을 찾도록 지시합니다.

연동 피연산자 주석

_Interlocked_operand_

함수 매개 변수 에 대해 상호 잠긴 피연산자의 주석을 사용하여 연동 피연산자로 식별합니다. 여러 함수는 인터록 프로세서 명령을 사용하여 액세스해야 하는 변수의 주소를 매개 변수 중 하나로 사용합니다. 이는 캐시 읽기-통과 원자성 명령이며 피연산자를 잘못 사용하는 경우 매우 미묘한 버그가 발생합니다.

드라이버 디스패치 루틴에 대한 주석

_Dispatch_type_

WDM 드라이버 디스패치 루틴을 선언할 때 드라이버 디스패치 루틴에 대한 주석 을 사용합니다. 자세한 내용은 WDM 드라이버에 함수 역할 형식을 사용하여 함수 선언드라이버 디스패치 루틴에 주석을 추가를 참조하세요.

파일 시스템 미니필터 사전 작업 콜백 _Flt_CompletionContext_Outptr_ 주석

_Flt_CompletionContext_Outptr_

파일 시스템 미니필터 사전 작업 콜백 함수 PFLT_PRE_OPERATION_CALLBACK 선언할 때 파일 시스템 미니필터 사전 작업 콜백 _Flt_CompletionContext_Outptr_ 주석을 사용합니다.

이 주석을 CompletionContext 매개 변수에 배치합니다. 이 주석은 코드 분석 도구에 CompletionContext가 FLT_PREOP_CALLBACK_STATUS 반환 값에 대해 올바른지 검사 지시합니다.

추가 정보

SAL 주석을 사용하여 C/C++ 코드 결함 줄이기