微软Windows驱动程序套件纯C try catch语法?
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
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
尽管看起来像 C++ 关键字,但它们实际上是用于 SEH 异常处理的宏。
添加这些作为您的预处理器定义:
Despite looking like C++ keywords, those are actually macros for SEH exception handling.
Add these do your preprocessor definitions: