C++ 有助于理解低级代码的语法

C++ help to understand syntax of low level code

我正在阅读一些代码,发现很难理解:

extern "C" NTSYSAPI NTSTATUS NTAPI ObReferenceObjectByName

这里是一些真实的代码:

extern "C" NTSYSAPI NTSTATUS NTAPI ObReferenceObjectByName(
            PUNICODE_STRING ObjectName,
            ULONG Attributes,
            PACCESS_STATE AccessState,
            ACCESS_MASK DesiredAccess,
            POBJECT_TYPE ObjectType,
            KPROCESSOR_MODE AccessMode,
            PVOID ParseContext OPTIONAL,
            PVOID * Object
        );

找了一会儿发现extern "C"是给编译器的指令, 它解析函数名称,就像在 C 中一样,这三个 NTSYSAPI、NTSTATUS、NTAPI 属于 winwdows 内核 API,但我不我不明白这个语法到底是如何工作的,因为看起来有 3 个 return 类型没有意义,所以它们是像 java 中的某种预处理器注释吗?或者可能是 (SAL) Microsoft 源代码注释语言。

说到这里,问题来了,这个语法是标准 C++ 语言的一部分,还是只是微软在 to 编译器中添加的某种额外功能,应该如何阅读? 谢谢

只有一种 return 类型,NTSTATUS,它是枚举。其他是函数调用的修饰符,例如 NTAPI 解析为 __stdcall,它修改了编译器调用函数的方式,而 NTSYSAPI 解析为 declspec(dllimport),它将函数标记为库导入。

另外这与SAL无关