2

Windows Driver Kit(WDK)には、純粋なCで記述されたいくつかのドライバーコードサンプルがありますが、いくつかのtry-catch-finally構造が散りばめられています。誰かが彼らのセマンティクスを知っていますか?優れたツールと標準への準拠について、マイクロソフトに感謝します。

からのコード抽出some_file.c

try {
    ...
    if (!NT_SUCCESS( status )) {

       leave; // ???
    }
    ...
} finally {
    ...
}

try  {
    ...
} except( EXCEPTION_EXECUTE_HANDLER ) {
    ...
}
4

2 に答える 2

5

WDKでの試行/例外処理は、ウィンドウ全体で使用されるSEHモデルに従います。例外をキャッチした後も続行できることに注意してください。

このモデルはC++よりも古いため、C++標準はWin32で使用される例外モデルと同じではありません。

PS:Cには例外処理がないため、SEHはCの非標準の拡張機能です。

MSDNでのSEH例外処理

SEHの紹介

于 2010-05-31T14:51:44.027 に答える
1

C ++キーワードのように見えますが、これらは実際にはSEH例外処理用のマクロです。

これらを追加して、プリプロセッサ定義を実行します。

try=__try
except=__except
finally=__finally
leave=__leave
于 2021-10-14T20:42:14.840 に答える