copymemory在vb2005下的使用问题,求助
查了很多资料 由于2005不再支持 as any 的数据类型 我把
Private Declare Sub CopyMemory Lib "kernel32 " Alias "RtlMoveMemory " (ByVal lpvDest As any, ByVal lpvSource As any, ByVal cbCopy As long)
改成 Private Declare Sub CopyMemory Lib "kernel32 " Alias "RtlMoveMemory " (ByVal lpvDest As integer, ByVal lpvSource As integer, ByVal cbCopy As integer)
但提示 “尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
做了很多次修改也没有解决,请前辈指教
[解决办法]
Private Declare Sub CopyMemory Lib "kernel32 " Alias "RtlMoveMemory " (ByVal lpvDest() As Byte, ByVal lpvSource() As Byte, ByVal cbCopy As Integer)
Sub Main()
Dim bDest(100) As Byte
Dim bSrc(100) As Byte
Dim strSrc As String = "1234567890 "
bSrc = System.Text.Encoding.ASCII.GetBytes(strSrc)
Dim cbCopy As Integer = strSrc.Length()
CopyMemory(bDest, bSrc, cbCopy)
Debug.WriteLine(System.Text.Encoding.ASCII.GetString(bDest))
End Sub
[解决办法]
指针要用System.IntPtr
还有要copymemory, 还要用marshal. AllocHGlobal.. 在托管堆上开内存
托管内存不能直接写