I/O 制御コードを含む IRP を安全に処理できるかどうかは、IOCTL コードの適切な定義と、ドライバーが IRP で受け取るパラメーターの慎重な調査次第です。 新しい IOCTL コードを定義するときは、次の規則を使用します。 常に、 0x800以上の FunctionCode 値を指定します。 必ず RequiredAccess 値を指定します。 呼び出し元に十分なアクセス権がない場合、I/O マネージャーは IOCTL を送信しません。 呼び出し元にカーネル メモリの非特定領域の読み書きを許可する IOCTL コードは定義しないでください。 ドライバー内で IOCTL コードを処理するときは、次の規則を使用してください。 ドライバーのディスパッチ ルーチンが受信した IOCTL コードをテストするときは、必ず 32 ビット値全体をテストする必要があります。 IoValidateD
![I/O 制御コードに関するセキュリティの問題 - Windows drivers](https://cdn-ak-scissors.b.st-hatena.com/image/square/d6e4cb632c7025e9f5e05fd314fbf6dcd6144e8d/height=288;version=1;width=512/https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fmedia%2Fopen-graph-image.png)