微软Windows驱动程序套件纯C try catch语法?

发布于 2024-09-04 00:36:09 字数 445 浏览 6 评论 0原文

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

some_file.c 中的代码摘录:

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

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

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

In the Windows Driver Kit (WDK) there are some driver code samples written in pure C, but sprinkled with some try-catch-finally constructs. Does someone know their semantics ? Thank you microsoft for your great tools and standards compliance.

Code extract from some_file.c:

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

£烟消云散 2024-09-11 00:36:09

WDK 中的 try/ except 处理遵循整个 Windows 中使用的 SEH 模型。请注意,您可以在捕获异常后继续。

该模型早于 C++,因此 C++ 标准与 Win32 使用的异常模型不同。

PS:C 没有异常处理,因此 SEH 是 C 的非标准扩展。

MSDN 中的 SEH 异常处理

介绍SEH

The try/except handling in the WDK follows the SEH model used throughout windows. Notice that you can continue after catching an exception.

This model predated C++, so the C++ standard is not the same as the exception model used by Win32.

PS: C does not have exception handling, so SEH is a non-standard extension to C.

SEH exception handling in the MSDN

Introduction to SEH

上课铃就是安魂曲 2024-09-11 00:36:09

尽管看起来像 C++ 关键字,但它们实际上是用于 SEH 异常处理的宏。

添加这些作为您的预处理器定义:

try=__try
except=__except
finally=__finally
leave=__leave

Despite looking like C++ keywords, those are actually macros for SEH exception handling.

Add these do your preprocessor definitions:

try=__try
except=__except
finally=__finally
leave=__leave
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文