PDA

Просмотр полной версии : Помогите пожалуйста протестить


_nic
04.09.2009, 20:53
Просьба к людям с семеркой или вистой (и виртуальными приводами типа демон тулза)протестить этот код

#include <Imapi2.h>
#include <iostream>
#include <conio.h>
#include <comutil.h>
#include <windows.h>
# pragma comment(lib, "comsuppwd.lib")
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
IDiscMaster2 *DM;
IEnumVARIANT *Enum;
unsigned long count=0;
long drvNums;
VARIANT DI;
BSTR volume,app=bstr_t("T_T"),vendor,prod;
char letter[5];
HRESULT hr;
CoCreateInstance(__uuidof(MsftDiscMaster2), NULL, CLSCTX_INPROC_SERVER, __uuidof(IDiscMaster2),(void**)&DM);
DM->get_Count(&drvNums);
DM->get__NewEnum(&Enum);
for(int i=0;i<drvNums;i++)
{
IDiscRecorder2 *DR;
hr=CoCreateInstance(__uuidof(MsftDiscRecorder2),NU LL,CLSCTX_INPROC_SERVER,__uuidof(IDiscRecorder2),( void**)&DR);
if(hr!=S_OK){goto Exit;}
Enum->Next(1,&DI,&count);
hr=DR->InitializeDiscRecorder(DI.bstrVal);
if(hr!=S_OK){goto Exit;}
hr=DR->AcquireExclusiveAccess(false,app);
if(hr!=S_OK){goto Exit;}
hr=DR->get_VolumeName(&volume);
if(hr!=S_OK){goto Exit;}
GetVolumePathNamesForVolumeName(_com_util::Convert BSTRToString(volume),letter,5,NULL);
hr=DR->get_VendorId(&vendor);
if(hr!=S_OK){goto Exit;}
DR->get_ProductId(&prod);
if(hr!=S_OK){goto Exit;}
std::cout<<_com_util::ConvertBSTRToString(prod)<<" "<<_com_util::ConvertBSTRToString(vendor)<<" "<<letter<<"\n";
Exit:
DR->ReleaseExclusiveAccess();
DR->Release();
}

getch();
return 0;
}

Для тех кто неможет собрать,вот собранная прога
http://dump.ru/file/3358564
ЗЫ:подозреваю что баг с ИМАПИ 2.0 который меня интересует присутствует только на ХР