2

Windows 驱动程序工具包 (WDK)中,有一些用纯 C 编写的驱动程序代码示例,但散布着一些 try-catch-finally 结构。有人知道他们的语义吗?感谢 Microsoft 提供的出色工具和标准合规性。

代码摘自some_file.c

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

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

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

2 回答 2

5

WDK 中的 try/except 处理遵循整个窗口中使用的 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 回答