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

.NET 下 VirtualProtectEx 声明 应该是啥样?偶这个声明遇到了很有趣的有关问题

2012-03-06 
.NET 下 VirtualProtectEx 声明 应该是啥样?偶这个声明遇到了很有趣的问题!情况如下:我把声明改成如下形式

.NET 下 VirtualProtectEx 声明 应该是啥样?偶这个声明遇到了很有趣的问题!
情况如下:
我把声明改成如下形式:
        Private   Declare   Function   VirtualProtectEx   Lib   "kernel32 "   (ByVal   hProcess   As   Integer,   ByVal   lpAddress   As   Integer,   ByVal   dwSize   As   Integer,   ByVal   flNewProtect   As   Integer,   ByRef   lpflOldProtect   As   Integer)   As   Integer

进行如下调用
                If   VirtualProtectEx(hProcess,   addr,   len,   4,   lOldProtect)   <>   0   Then
                        '某些操作
                Else
                        MsgBox(GetLastError)
                End   If
这里的hProcess是正确的,OpenProcess(&H1F0FFF,   True,   m_Pid)获取,我的程序本身具有进程操作的全部权限,addr是一个内存块的开始地址,len是该内存块大小(字节),4是PAGE_READWRITE常数,lOldProtect初始化为0
当调用上面过程的时候,出现很有意思的一个问题,当内存块本身属性已经是PAGE_READWRITE时,函数返回0,即调用成功,当内存块本身属性为其他值时,GetLastError返回值为87(错误参数),搞不定了。

大家来帮忙啊~~~~55555555555
另外前几天发布那个修改器,竟然有10几处致命的错误,我的娘来,我严重道歉。。。。。。。真恼了。。。还在进一步修复当中。。。。。

[解决办法]
..............................................
[解决办法]
Private Declare Function VirtualProtectEx Lib "kernel32 " (ByVal hProcess As Integer, ByRef lpAddress As Integer, ByVal dwSize As Integer, ByVal flNewProtect As Integer, ByVal lpflOldProtect As Integer) As Integer
[解决办法]
BOOL VirtualProtectEx(
HANDLE hProcess,
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flNewProtect,
PDWORD lpflOldProtect
);

这是C++的原型,先mark,等会我看看

热点排行