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 用 Windows Driver Kit (WDK) 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_
- DRIVER_CANCEL コールバック関数の正しい動作を保証するには、_IRQL_is_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_
関数パラメーターのインターロックされたオペランドの注釈を使用して、それらをインターロックされたオペランドとして識別します。 多くの関数は、パラメーターの 1 つとして、インターロックされたプロセッサ命令を使用してアクセスする必要がある変数のアドレスを受け取ります。 これらはキャッシュ リードスルー アトミック命令であり、オペランドが正しく使用されていないと非常に微妙なバグが発生します。
ドライバー ディスパッチ ルーチンの注釈
_Dispatch_type_
WDM ドライバー ディスパッチ ルーチンを宣言するときに、ドライバー ディスパッチ ルーチンの注釈を使用します。 詳細については、「WDM ドライバーの関数の役割の種類を使用して関数を宣言し、ドライバーディスパッチ ルーチンに注釈を付ける」をご参照ください。
ファイル システム ミニフィルターの操作前コールバック _Flt_CompletionContext_Outptr_ 注釈
_Flt_CompletionContext_Outptr_
ファイル システム ミニフィルターの事前操作コールバック関数 PFLT_PRE_OPERATION_CALLBACKを使用するときに、ファイル システム ミニフィルターの操作前コールバック_Flt_CompletionContext_Outptr_注釈を使用します。
この注釈を CompletionContextパラメータに配置します。 この注釈は、CompletionContextが FLT_PREOP_CALLBACK_STATUS 戻り値に対して正しいかどうかをチェックするようにコード分析ツールに指示します。