Просьба к людям с семеркой или вистой (и виртуальными приводами типа демон тулза)протестить этот код Code: #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),NULL,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::ConvertBSTRToString(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 который меня интересует присутствует только на ХР