2

我正在尝试在 Windows 驱动程序上做一些工作,但我无法理解示例源代码的一部分。在我的 C 经验中,我以前从未见过这种情况,而且我在上面找不到任何东西。无论如何,我想知道参数变量的“IN”部分是什么?下面是一个函数头的例子。它也可能是其他一些东西,例如“OUT”、“INOUT”、“INOPT”,甚至更多(找不到其他东西)。

VOID
PLxReadRequestComplete(
    IN WDFDMATRANSACTION  DmaTransaction,
    IN NTSTATUS           Status
    )
4

2 回答 2

5

这些只是描述参数预期用途的简单标记(来自 Windows DDK 的早期阶段)。

在正常构建中,宏被定义为空,但是可以想象它们被定义为特定于实现的关键字,允许编译器(使用 SAL 或其他静态代码分析工具)对参数/参数的正确使用进行更深入的分析。我不认为它们用于 SAL,因为它们根本不够“丰富”来描述 SAL 喜欢考虑的所有属性。所以我认为它们主要是为了向程序员传达意图。

于 2012-08-13T19:06:55.320 回答
2

这不是标准的 C。很可能,IN已使用 a 定义为具有其他值#define- 即。在您的*.h文件中搜索#define IN#define OUT等,看看您是否能找到什么。

于 2012-08-13T18:59:22.157 回答