C28169

警告 C28169: ディスパッチ関数には _Dispatch_type_ アノテーションがありません

コード分析ツールは、MajorFunctionテーブルへの代入の右側に (有効な) _Dispatch_type_ 注釈がない場合にこの警告を報告します。 この警告は、右側に _Dispatch_type_ アノテーションを剥奪するキャストがある場合に発生することがあります。 右側は、適切な _Dispatch_type_ 注釈を備えた DRIVER_DISPATCH タイプの関数である必要があります。

詳細については、関数の役割タイプ宣言の使用を参照。

次の関数宣言は、関数がMajorFunctionのディスパッチルーチン割り当てで使用されている場合に、この警告を引き起こします。

NTSTATUS
DispatchSystemControl (
    PDEVICE_OBJECT  DeviceObject,
    PIRP            Irp
    );

次の関数宣言を同じ方法で使用しても、この警告は表示されません。

// Function: DispatchSystemControl
// This is an example of a fully annotated declaration.  
// IRP_MJ_SYSTEM_CONTROL is the type of IRP handled by this function.  
// Multiple _Dispatch_type_ lines are acceptable if the function handles more than 1 IRP type.
//
_Dispatch_type_(IRP_MJ_SYSTEM_CONTROL) 
DRIVER_DISPATCH DispatchSystemControl;