This is a snippet of my code.
Declare Function ReadProcessMemory Lib 'kernel32' _ (ByVal hProcess As Long, _ ByVal lpBaseAddress As Long, _ lpBuffer As Any, _ ByVal nSize As Long, _ lpNumberOfBytesRead As Long) As Long Dim bytearray As String * 65526 Dim GetWindowsFormsID ReadProcessMemory(processHandle, bufferMem, ByVal bytearray, size, lp) GetWindowsFormsID = ByteArrayToString(bytearray, retLength) Function ByteArrayToString(bytes As String, length As Long) As String Dim retValStr As String Dim l As Long retValStr = String$(length + 1, Chr(0)) l = WideCharToMultiByte(CP_ACP, 0, bytes, -1, retValStr, length + 1, Null, Null) ByteArrayToString = retValStr End Function
I got ’94 null’ error while calling WideCharToMultiByte. But I’m sure bytes is not empty.

Is this the exact procedure to convert this output into String?
OK, this is solved (and also this question). The issue is actually convert WideChar string into ANSI string. I use CopyMemory instead of WideCharToMultiByte.