VB IsBadReadPtr IsBadWritePtr 检查内存

admin 2021年4月3日18:52:53评论56 views字数 1508阅读5分1秒阅读模式

    VB,IsBadReadPtr,IsBadWritePtr,检查内存函数功能详解,IsBadReadPtr 是用来判断指定的内存范围是否可以用来进行读取操作,IsBadWritePtr 是用来判断指定的内存范围是否可以用来进行写入操作。

---------------------------------------------------------------------------------------------

IsBadReadPtr 函数详解

函数原型:
    BOOL IsBadReadPtr(CONST VOID *lp,UINT_PTR ucb);

参数详解:
    lp    表示要检查的内存指针
    ucb   要检查的内存块的大小

函数声明:
    Private Declare Function IsBadReadPtr Lib "kernel32" (lp As Any, ByVal ucb As Long) As Long

函数说明:
    IsBadReadPtr 是用来判断指定的内存范围是否可以用来进行读取操作。

函数返回值:
    如果调用进程有权限访问该内存,则返回“0”。否则,返回非“0”。

-----------------------------------------------------------------------------------------------

IsBadWritePtr 函数详解

参数详解:
    lp    表示要检查的内存指针
    ucb   要检查的内存块的大小

函数声明:
    Private Declare Function IsBadWritePtr Lib "kernel32" (lp As Any, ByVal ucb As Long) As Long

函数说明:
    IsBadWritePtr 是用来判断指定的内存范围是否可以用来进行写入操作。

函数返回值:
    如果调用进程有权限访问该内存,则返回“0”。否则,返回非“0”。

-----------------------------------------------------------------------------------------------

使用实例:
    MsgBox IsBadReadPtr(ByVal &H0, 4)
    MsgBox IsBadWritePtr(ByVal &H0, 4)

    If IsBadReadPtr(H, 4) = 0 And IsBadWritePtr(Tmp, 4) = 0 Then
        CopyMemory Tmp, ByVal H, 4
    End If

使用说明:
    该函数检查调用进程是否有读取指定内存的内容的权限,微软提供的32位(Win7等64位操作系统不支持该API)操作系统下的API。

    但是像“CopyMemory”、“ZeroMemory”这种底层 API 是非常容易造成程序崩溃的,例如下面的代码执行就会崩溃(100% 概率):

        ZeroMemory ByVal 0&, 1

    因此,强烈建议您在使用读写内存操作时,若无法肯定某块内存可用时,先使用 IsBadReadPtr 和 IsBadWritePtr 判断。

文章来源于lcx.cc:VB IsBadReadPtr IsBadWritePtr 检查内存

相关推荐: C, C++ std::调用标准函数库函数功能详解

    VC,C,C++ “std::”调用C++标准函数库函数,功能详解。     std::,功能就是说明,冒号后边的函数是C++标准函数库中的函数。为什么要这样呢?     例如:std::asd,这里的asd是标准库中的函数asd。但是如果自己不小心声…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月3日18:52:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   VB IsBadReadPtr IsBadWritePtr 检查内存http://cn-sec.com/archives/319015.html

发表评论

匿名网友 填写信息