2

我开始学习如何编写 Windows 驱动程序,但似乎无法找到包含位于函数参数声明中的 IN 定义的任何地方。例如:

NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, 
                      IN PUNICODE_STRING RegistryPath)

有人可以解释一下 IN 是什么意思吗?

4

3 回答 3

4

这些称为 SAL(源注释语言)注释,并且有MSDN 文档说明如何使用它们从出色的静态分析中受益。

实际语法可能因一个 SAL 版本而异(例如 IN 和 _In_)。有向后兼容性,但我建议始终使用最新的语法。

于 2013-03-26T03:57:47.650 回答
2

据我所知,它的定义如下:

///
/// Datum is passed to the function.
///
#define IN

这用于表明该参数只是一个输入参数。

asOUTOPTIONAL用于表示输出和可选参数。

这些可能是为了方便。

于 2013-03-25T13:11:59.387 回答
0

在 WDK 中,这是在 ntdef.h 文件中定义的。通常,在您的驱动程序中,您只需包含 ntddk.h 或 wdm.h 文件,这些文件又将包含 ntdef.h 和其他重要的头文件。例如:

#include <ntddk.h>

如前所述,该注解用于静态分析,简单定义为

#define IN
于 2013-03-28T15:10:17.157 回答