Add get_error_msg
parent
9b020fad53
commit
9b5383341d
|
@ -37,3 +37,35 @@ pub fn get_module_filename(handle HANDLE) ?string {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Ref - https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-formatmessagea#parameters
|
||||
const (
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100
|
||||
FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000
|
||||
FORMAT_MESSAGE_FROM_HMODULE = 0x00000800
|
||||
FORMAT_MESSAGE_FROM_STRING = 0x00000400
|
||||
FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000
|
||||
FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200
|
||||
)
|
||||
|
||||
// Ref - winnt.h
|
||||
const (
|
||||
SUBLANG_NEUTRAL = 0x00
|
||||
SUBLANG_DEFAULT = 0x01
|
||||
LANG_NEUTRAL = (SUBLANG_NEUTRAL)
|
||||
)
|
||||
|
||||
fn ptr_get_error_message(code u32) voidptr {
|
||||
mut buf := voidptr(0)
|
||||
C.FormatMessage(
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER
|
||||
| FORMAT_MESSAGE_FROM_SYSTEM
|
||||
| FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
0, code, C.MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &buf, 0, 0)
|
||||
return buf
|
||||
}
|
||||
|
||||
pub fn get_error_msg(code u32) string {
|
||||
_ptrdata := ptr_get_error_message(code)
|
||||
return tos(_ptrdata, C.strlen(_ptrdata))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue