警告C6102 - VS2013

时间:2014-11-25 21:57:34

标签: visual-studio-2013 initialization analyzer

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

1 个答案:

答案 0 :(得分:1)

HIDD_ATTRIBUTES的第一个成员是size,需要设置为
sizeof(HIDD_ATTRIBUTES)在任何调用中使用之前,Windows使用它来实现 找出你正在使用的版本。