#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
STDAPICALLYTYPE的宏定义如下:
#ifdef _WIN32 // Win32 doesn't support __export
#define STDAPICALLTYPE __stdcall
#else
#define STDAPICALLTYPE __export __stdcall
#endif
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
所以STDAPI就是extern "c" HRESULT __stdcall
extern "c" 会指示编译器这部分代码按C语言的进行编译http://blog.sina.com.cn/s/blog_bb7fc61f0102wti6.html
HRESULT 函数返回值类型,如果函数正常执行,则返回S_OK,同时真正的函数运行结果则通过参数指针返回。http://blog.sina.com.cn/s/blog_bb7fc61f0102wti4.html
__stdcall 是一种函数调用约定关键字, 该调用只是通过堆栈来push和pop参数。push参数时,顺序是从右到左。