>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >js-ctypes copy memory http://forum.mozilla-russia.org/viewtopic.php?id=55750 |
logik > 21-07-2012 13:27:01 |
Привет всем. Есть необходимость с помощью js-ctypes скопировать кусок памяти. можно ли это как-то сделать? Благодарю за помощь. |
hydrolizer > 23-07-2012 06:35:50 |
logik Выделить код Код:extern "C" __declspec(dllexport) int GetErrorMessage(int errcode, LPTSTR buffer) { int msgRes=FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,errcode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),buffer,1025, NULL ); return msgRes; } и в js: Выделить код Код:GetErrorMessage: function(errcode,onlyMessage) { var method=this.apilib.declare("GetErrorMessage",ctypes.winapi_abi,ctypes.int32_t,ctypes.int32_t,ctypes.jschar); let arrayType = ctypes.ArrayType(ctypes.jschar); let msg = new arrayType(1024); var res=method(errcode,msg); if (res==0) throw new Error("apilib.GetErrorMessage: FormatMessageW returns NULL.") return msg.readString(); } ctypes весьма неудобны, когда нужно выполнить достаточно сложный код (который при том тривиален в C/C++) - я бы посоветовал по возможности выносить максимум кода в свою сишную библиотеку-враппер с методами с максимально простой сигнатурой. И вызывать методы из этого враппера - так намного проще. |
logik > 23-07-2012 22:52:07 |
ну мне нужно было конкретное решение именно по copymemory, я просто не знал какую функцию из dll нужно было цеплять. в целом c ctypes я знаком. |