WMI win32\u物理媒体或win32\u磁盘驱动器结果问题 我使用Visual C++ 2010。< /P>

WMI win32\u物理媒体或win32\u磁盘驱动器结果问题 我使用Visual C++ 2010。< /P>,c++,winapi,visual-c++,wmi,wmi-query,C++,Winapi,Visual C++,Wmi,Wmi Query,我正在尝试使用win32_physicalmedia或win32_diskdrive检索硬盘序列号,它工作正常,但在许多PC上,它会多次显示序列号,有时还会显示符号和字符 我使用的代码如下所示: pSvc->ExecQuery( bstr_t("WQL"), bstr_t("SELECT SerialNumber FROM Win32_PhysicalMedia"), // or Win32_DiskDrive WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RET

我正在尝试使用win32_physicalmedia或win32_diskdrive检索硬盘序列号,它工作正常,但在许多PC上,它会多次显示序列号,有时还会显示符号和字符

我使用的代码如下所示:

pSvc->ExecQuery(
bstr_t("WQL"), 
bstr_t("SELECT SerialNumber FROM Win32_PhysicalMedia"), // or Win32_DiskDrive
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
NULL,
&pEnumerator);

 IWbemClassObject *pclsObj;
ULONG uReturn = 0;

while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, 
    &pclsObj, &uReturn);

if(0 == uReturn)
{
    break;
}

VARIANT vtProp;

hr = pclsObj->Get(L"SerialNumber", 0, &vtProp, 0, 0);
    wcout << " Physical Drive SN : " << vtProp.bstrVal << endl;
    VariantClear(&vtProp);

    pclsObj->Release();
}
pSvc->ExecQuery(
bstr_t(“WQL”),
bstr\u t(“从Win32\u PhysicalMedia中选择序列号”)、//或Win32\u DiskDrive
WBEM_FLAG_仅前进| WBEM_FLAG_立即返回|,
无效的
&喷鼻器);
IWbemClassObject*pclsObj;
ULONG uReturn=0;
while(pEnumerator)
{
HRESULT hr=pEnumerator->Next(WBEM_无限,1,
&pclsObj和uReturn);
如果(0==uReturn)
{
打破
}
变异vtProp;
hr=pclsObj->Get(L“SerialNumber”,0,&vtProp,0,0);

wcoutOhh伙计们,我想经过一些研究后,我发现代码还试图获取所有可移动设备的序列号,不仅仅是硬盘


谁能告诉我如何将mediatype仅指定给固定硬盘!?

您需要检查错误。。。