C++代码获取硬盘编号失败

使用DeviceIoControl 获取硬盘编号的时候,对有的硬盘不可行,返回空。搜集了网上大部分都是使用这个方法来获取硬盘属性。是不是还有其他方法可以获取啊

if (0 == GetLogicalDriveStrings(MAX_PATH, Drive))//获得本地所有盘符存在Drive数组中  
{
    return TR_FAIL_LOGICAL_DRIVE_DETECTION;
}

CString myDrive;
int i = 0;
char freeSpace[16] = { 0 };
while (Drive[i - 1] != '\0' || Drive[i] != '\0')//搜索数组尝试得到盘符信息,如果两者皆否,则数组搜索到尽头  
{
//todo 你要做的事情
}

仅供参考,欢迎提问