在 WinAPI 中所有大写的函数名称是什么意思?
What does all capitalized Function name means in WinAPI?
通知提供商目录枚举正在开始
`
PRJ_START_DIRECTORY_ENUMERATION_CB PrjStartDirectoryEnumerationCb;
HRESULT PrjStartDirectoryEnumerationCb(
const PRJ_CALLBACK_DATA *callbackData,
const GUID *enumerationId
)
{...}
`
我很困惑如何使用这个功能。
您正在查看回调(一种通用编程概念,并非特定于 Win32),它通常是对您必须自己编写的函数的引用。为了让 C/C++ 编译器检查您是否正确定义了回调函数,并简化此类回调的使用,通常使用 typedef
。 Win32 API 通常使用全部大写来定义回调类型。在这种情况下,PRJ_START_DIRECTORY_ENUMERATION_CB
是函数指针的类型(指向您必须编写的回调函数的指针),并且在projectedfslib.h
中定义为:
typedef
_Function_class_(PRJ_START_DIRECTORY_ENUMERATION_CB)
HRESULT
(CALLBACK PRJ_START_DIRECTORY_ENUMERATION_CB)(
_In_ const PRJ_CALLBACK_DATA* callbackData,
_In_ const GUID* enumerationId
);
此定义中有很多多余的内容,可帮助 Microsoft 工具集验证与此类函数指针的使用相关的各种内容。在编写适用于此类回调的自己的函数时,您不必重复 typedef
中使用的很多内容。回调的 MSDN 文档通常显示一个示例,说明如何为回调编写方法签名,并且该示例通常被简化以去除工具集所需的多余内容,留下开发人员在编写回调时需要定义的内容.
在这种情况下,示例函数称为 PrjStartDirectoryEnumerationCb
,但没有使用该名称定义的函数。您可以定义一个类似于您在 MSDN 上看到的函数。它不必具有相同的名称——您可以随意命名,然后在需要回调的任何地方使用您的函数名称。
HRESULT MyCallback(const PRJ_CALLBACK_DATA *callbackData, const GUID* enumerationId)
{
// implement your callback here
}
通知提供商目录枚举正在开始
`
PRJ_START_DIRECTORY_ENUMERATION_CB PrjStartDirectoryEnumerationCb;
HRESULT PrjStartDirectoryEnumerationCb(
const PRJ_CALLBACK_DATA *callbackData,
const GUID *enumerationId
)
{...}
` 我很困惑如何使用这个功能。
您正在查看回调(一种通用编程概念,并非特定于 Win32),它通常是对您必须自己编写的函数的引用。为了让 C/C++ 编译器检查您是否正确定义了回调函数,并简化此类回调的使用,通常使用 typedef
。 Win32 API 通常使用全部大写来定义回调类型。在这种情况下,PRJ_START_DIRECTORY_ENUMERATION_CB
是函数指针的类型(指向您必须编写的回调函数的指针),并且在projectedfslib.h
中定义为:
typedef
_Function_class_(PRJ_START_DIRECTORY_ENUMERATION_CB)
HRESULT
(CALLBACK PRJ_START_DIRECTORY_ENUMERATION_CB)(
_In_ const PRJ_CALLBACK_DATA* callbackData,
_In_ const GUID* enumerationId
);
此定义中有很多多余的内容,可帮助 Microsoft 工具集验证与此类函数指针的使用相关的各种内容。在编写适用于此类回调的自己的函数时,您不必重复 typedef
中使用的很多内容。回调的 MSDN 文档通常显示一个示例,说明如何为回调编写方法签名,并且该示例通常被简化以去除工具集所需的多余内容,留下开发人员在编写回调时需要定义的内容.
在这种情况下,示例函数称为 PrjStartDirectoryEnumerationCb
,但没有使用该名称定义的函数。您可以定义一个类似于您在 MSDN 上看到的函数。它不必具有相同的名称——您可以随意命名,然后在需要回调的任何地方使用您的函数名称。
HRESULT MyCallback(const PRJ_CALLBACK_DATA *callbackData, const GUID* enumerationId)
{
// implement your callback here
}