[.NET] 有關於WriteProcessMemory API 使用問題
請教各位前輩們,
我用VB 2008 版本
使用的 讀寫記憶體 的 API 函數宣告如下
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As
Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal
nSize As Integer, ByVal lpNumberOfBytesWritten As Integer) As Integer
Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess
As Integer, ByVal lpBaseAddress As Integer, ByVal lpBuffer() As Byte, ByVal
nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
我一直以來總有個疑問(我是不懂中 硬去使用他)
在 RPM 的 ByRef lpBuffer As Integer 如果把他改成 ByVal
在使用這個函數時候會變成 受限制的記憶體 的錯誤訊息
而 WPM 的同樣參數 卻 不能用 Integer 去作寫入
變成必須要用 陣列方式 且還要用 Byte 去作寫入才能正常
這兩個函數是我一直以來總是不明瞭的問題
明明 參數都一樣 為何使用方式卻不一樣?
如果程式碼 寫法如下
n =4
ReadProcessMemory (hProcess, lBassAddr, s(0), n, 0&)
For i = 0 To n - 1
Listbox1.Items.add ("位址:" & (i + lBassAddr) & "= " & s(i))
Next
則在listbox 中只會顯示 S(0) 的數值 且會出錯
如果在 VB6 中 卻可以正常顯示 S(0~3) 的 byte
上面的程式碼 是我已經改成 .net 版本
如果原始的 VB6 寫法是這樣
ReadProcessMemory hProcess, ByVal lBassAddr, s(0), n, ByVal 0&
For i = 0 To n - 1
List2.AddItem "位址:" & (i + lBassAddr) & "= " & s(i)
Next
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.63.89
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章