system plugin with getlasterror and formatmessage
Hi people,
I´m been trying to modify a function on this link (http://nsis.sourceforge.net/Reading_...from_DLL_files) to use formatmessage in conjunction with getlasterror, so I can get the verbose message from kernel32 funcions called with ?e at the end.
My approach is like this:
define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000
>!define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
>!define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200
>!define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
>!macro ReadStringFromDLL STRING_ID VAR
System::Call 'kernel32::GetSystemDefaultLangID(i v)i .R0'
StrCpy $0 ${FORMAT_MESSAGE_FROM_SYSTEM}
IntOp $0 $0 + ${FORMAT_MESSAGE_ALLOCATE_BUFFER}
IntOp $0 $0 + ${FORMAT_MESSAGE_IGNORE_INSERTS}
IntOp $0 $0 + ${FORMAT_MESSAGE_MAX_WIDTH_MASK}
System::Call 'kernel32::FormatMessage(i r0,i n, i ${STRING_ID}, i R0, *w .R2, i ${NSIS_MAX_STRLEN}, i n) i .R3'
StrCpy ${VAR} $R2
>!macroend
>
the result on ${VAR} is a bunch of '????????????????' that I dont understand where it came from... :stare:Reading MSDN (http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx), it appears to be right.
Seen a lot of people have problem with this function.
Some help would be much appreciated. ;)
(sorry the bad english)