21.09.2007, 18:59 | #1 |
Участник
|
Прочитать сформированный GUID
Используя API-функции формирую GUID. Но никак не могу получить это значение в символьном виде. Не понятно, где ошибка:
X++: static void get_GUID(Args _args) { #define.MAX_PATH(260) Dll ole32 = new Dll("OLE32"); DllFunction coCreateGuid = new DllFunction(ole32, "CoCreateGuid"); DllFunction stringFromGUID2 = new DllFunction(ole32, "StringFromGUID2"); Binary getGUID = new Binary(#MAX_PATH); Binary strGUID = new Binary(#MAX_PATH); int retVal; ; // Формирую сам GUID coCreateGuid.arg(ExtTypes::POINTER); coCreateGuid.returns(ExtTypes::DWORD); coCreateGuid.call(getGUID); // Теперь пытаюсь его перевести stringFromGUID2.arg(ExtTypes::POINTER, ExtTypes::POINTER, ExtTypes::DWORD); stringFromGUID2.returns(ExtTypes::DWORD); retVal = stringFromGUID2.call(getGUID,strGUID,#MAX_PATH); print "Сформированный GUID ",getGUID.string(0); // Теоретически, здесь должен получить строку "перевода", однако ничего нет. print "Перевод содержит символов ", retVal; print "Переведенный GUID ",strGUID.string(0); // Пока сделал перевод таким образом, хотя нет уверенности в его правильности print "Перевод вручную"; print int2hex(getGUID.dWord(0)), "-", int2hex(getGUID.Word(4)), "-", int2hex(getGUID.Word(4+2)), "-", int2hex(getGUID.Word(4+2+2)), "-", int2hex(getGUID.Word(4+2+2+2)), int2hex(getGUID.dWord(4+2+2+2+2)); pause; } |
|