ReadProcessMemory 선언
-
02-01-2020 - |
문제
현재
로 정의했습니다. Private Declare Function ReadProcessMemory1 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
.
와 나는 각 유형에 대한 또 다른 선언을 가지고 있습니다. 나는 대신 이것을 사용하려고 노력하고 있습니다
<DllImport("kernel32.dll", SetLastError:=True)> _
Public Shared Function ReadProcessMemory( _
ByVal hProcess As IntPtr, _
ByVal lpBaseAddress As Integer, _
<Out()> ByRef lpBuffer As Byte(), _
ByVal dwSize As Integer, _
ByRef lpNumberOfBytesRead As Integer) As Boolean
End Function
.
pvinvoke.net에서 꺼져있는 , 내가 그것을 사용하려고하는 방법을 heres :
Public Shared Function Int(address As Integer)
Dim buffer(3) As Byte
ReadProcessMemory(pHandle, address, buffer, 4, 0)
Return BitConverter.ToInt32(buffer, 0)
End Function
.
이 오류를 사용하고 보호 된 메모리를 읽거나 쓰려는 시도를 말하지만, 이와 같은 오래된 RPM 선언을 사용하며 잘 작동합니다.
Public Shared Function Int(address As Integer)
Dim buffer As Integer
ReadProcessMemory(pHandle, address, buffer, 4, 0)
Return buffer
End Function
.
나는 무엇을 잘못하고 있습니까?
해결책
P / Invoke 선언이 잘못되었습니다.그것은해야합니다 :
<DllImport("kernel32.dll", SetLastError:=True)> _
Public Shared Function ReadProcessMemory( _
ByVal hProcess As IntPtr, _
ByVal lpBaseAddress As IntPtr, _
<Out()> ByVal lpBuffer As Byte(), _
ByVal dwSize As IntPtr, _
ByRef lpNumberOfBytesRead As IntPtr) As Boolean
End Function
. 제휴하지 않습니다 StackOverflow