首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

copymemory在vb2005下的使用有关问题

2012-02-25 
copymemory在vb2005下的使用问题,求助查了很多资料由于2005不再支持asany的数据类型我把PrivateDeclareSub

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.. 在托管堆上开内存
托管内存不能直接写

热点排行