It's been a long long day.
This displays the right text along with some Chinese characters.
;CONSOLE program
;
; RegisterEventSource.asm Writes an event log in the Application section
;
__UNICODE__=1 ; NEEDED ?
include \masm32\include\masm32rt.inc
include \masm32\include\advapi32.inc
includelib \masm32\lib\advapi32.lib
.data
OutputBuffer BYTE 512 dup(0)
Provider_Name BYTE 'The provider', 0
Fail db "Failure, Register Event Function Returned %d.",0
Success db "Success, Register Event Function Returned %d.",0
;UCSTR AppName ,'SiegeWorks 2011',0 ; the label is optional
AppName BYTE 'SiegeWorks 2012',0
;
stringpointers WORD "T","h","i","s"," ","i","s"," ","a","n"," ","e","x","a","m","p","l","e"
WORD "."," ","S","i","e","g","e","W","o","r","k","s"," ","2","0","1","2",0
p_string_input DWORD 0
.DATA?
hEventLog HWND ?
dwEventDataSize WORD ?
.code
start:
invoke RegisterEventSource, 0, ADDR Provider_Name
mov hEventLog, EAX
call Display_Return_Message
lea EAX, stringpointers
mov p_string_input, EAX
invoke ReportEvent, hEventLog, \ ; handle to log file
1, \ ; EVENTLOG_ERROR_TYPE
2, \ ; DATABASE_CATEGORY
0C0000101H, \ ; MSG_BAD_FILE_CONTENTS the event ID
0, \ ; NULL
1, \ ; number input strings
0, \ ; number bytes to write in word value or 0
ADDR p_string_input, \ ; ADDRess of strings
0 ; pointer to binary data or NULL
call Display_Return_Message
invoke DeregisterEventSource, hEventLog
call Display_Return_Message
invoke ExitProcess, NULL
Display_Return_Message proc
.if EAX == 0
pusha
invoke GetLastError
invoke wsprintf, ADDR OutputBuffer, ADDR Fail, EAX
invoke MessageBox, 0, ADDR OutputBuffer, ADDR AppName, 0
popa
.endif
.if EAX != 0
invoke wsprintf, ADDR OutputBuffer, ADDR Success, EAX
invoke MessageBox, 0, ADDR OutputBuffer, ADDR AppName, 0
.endif
ret
Display_Return_Message endp
END start