Visual Studio 2013提供了一个有趣的静态代码分析。这是我得到的警告,我无法摆脱:
C6102 Using 'Attributes' from failed function call at line '1031' 'Attributes' is not initialized 1031 Skip this branch, (assume '<branch condition>' is false) 1031 'Attributes' is used, but may not have been initialized 1037.
代码很简单:
BOOL GetDeviceVersionNumber(int Index, PUSHORT version)
{
/*
This function returns TRUE is it succeeds
and puts Version number in VersionNumber
*/
HANDLE h = GetHandleByIndex(Index);
if (!h || h==INVALID_HANDLE_VALUE)
return FALSE;
HIDD_ATTRIBUTES Attributes;
if (!HidD_GetAttributes(h, &Attributes))
{
CloseHandle(h);
return FALSE;
};
*version = Attributes.VersionNumber;
CloseHandle(h);
return TRUE;
}
现在,Attributes不是指针,它是一个结构。 我确实尝试初始化它,但这没有帮助。
有什么想法吗? TX
答案 0 :(得分:1)
HIDD_ATTRIBUTES
的第一个成员是size
,需要设置为
sizeof(HIDD_ATTRIBUTES)
在任何调用中使用之前,Windows使用它来实现
找出你正在使用的版本。