x64 ベースのシステムでは、カーネル コードと特定のカーネル データ構造が変更から保護されます。 ドライバーがこのようなコードまたはデータの変更を試行すると、システムでバグ チェック (CRITICAL_STRUCTURE_CORRUPTION バグ チェック) が発生します。
x64 ベースのシステムのドライバーは、このバグのチェックをトリガーする可能性のある操作を回避する必要があります。 特に、ドライバーは以下を行ってはいけません。
実行時にカーネル コードの変更を試みます。
独自のスタックを実装して使用します。
割り込みディスパッチ テーブル (IDT) やグローバル記述子テーブル (GDT) などのハードウェア ディスパッチ テーブルを変更します。
文書化されていないカーネル データ構造を修正します。
上記の操作では、x86 ベースまたは Itanium ベースのシステムでバグ チェックがトリガーされることはありませんが、ドライバーがプラットフォームでこのような操作を実行してはなりません。 これらの操作は、今後のバージョンの Microsoft Windows オペレーティング システムでは機能しない可能性があります。
64 ビット コンパイラを使用したプログラミングの一般的な情報については、Visual C++ を使用した 64 ビット プログラミングに関する記事を参照してください。