ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Проблема с дллкой (С++ Builder)
  #1  
Старый 09.09.2009, 10:43
Аватар для _nic
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию Проблема с дллкой (С++ Builder)

Есть дллка с ф-цией
Код:
extern "C" __declspec(dllexport) void listDrives(vector <string> &drives)
{
	char *out=new char[1024*12];
	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=0;
	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;}
		hr=DR->get_ProductId(&prod);
		if(hr!=S_OK){goto Exit;}*/
		wsprintf(out,"%s;%s",letter,_com_util::ConvertBSTRToString(DI.bstrVal));
		drives.insert(drives.begin(),string(out));
		Exit:
		memset(out,NULL,strlen(out));
		DR->ReleaseExclusiveAccess();
		DR->Release();
	}
	delete []out;
}
Пытаюсь её заюзать
Код:
#include <vector>
#include <map>
#include <string>
.......................................................
using namespace std;
HINSTANCE hLib;
typedef void (WINAPI *listDrivesfunc)(vector <string> &drives);
listDrivesfunc listDrives;
........................................................
hLib=LoadLibrary("dlld.dll");
if(hLib==NULL) 
{
TerminateProcess(GetCurrentProcess(),0);
}
........................................................
listDrives=(listDrivesfunc)GetProcAddress((HMODULE)hLib,"listDrives");
vector <string> drvs;
listDrives(drvs);//тут выбивает external exception E06D7363
Насколько я понял после гугления проблема в передаваемой переменной в ф-цию.Но почему непонял
Вопрос- где я мог накосячить?
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с дедиками [help!] Sniper482 Безопасность 4 14.09.2009 21:22
Embarcadero: C++ Builder 2009 Kollinz С/С++, C#, Delphi, .NET, Asm 1 11.08.2009 11:27
Непонятная проблема с интернетом по всей локалке ZneP Администрирование 6 19.06.2009 15:27
[Статья] Создание расширения для Windows Explorer при помощи C++ Builder Dobby007 С/С++, C#, Delphi, .NET, Asm 2 29.03.2009 08:58
С++ Builder проблема с кучей _nic С/С++, C#, Delphi, .NET, Asm 13 06.02.2009 01:26



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ