Есть такой код на C++ (DLL):
extern "C" __declspec(dllexport) void EnumInterface(LPCTSTR p_outString) //указатель на строку
{
.....объявление переменных........
RPC_WSTR strGuid = NULL;
__try
{
..............некотроые действия.................................
if (UuidToStringW(&pIntfList->InterfaceInfo.InterfaceGuid, &strGuid) == RPC_S_OK)
{
wcscpy((LPWSTR)p_outString,(LPWSTR)strGuid);
RpcStringFreeW(&strGuid);
}
}
__finally
{
....очищаем память....
}
}
Вопрос:
1. правильно ли я возвращаю строку копируя её в область памяти, выделеной вызывающим процессом? (в случае с С — нечто типа wchar_t *test; test = new wchar_t[64]

2. Как правильно эту ДЛЛ вызвать из VB6 (чтобы вернуть в вызывающую программу строку wstring)?
Спасибо.