API函数中的缓冲区

     阅读 408 次    更新时间:2014/4/18    
API函数中的缓冲区  

API函数中的缓冲区  


    在很多API函数的应用中,都会涉及到缓冲区这一个参数,这个参数我们应该如何去应用呢?下面,让我们首先打开浪花的一个程序《取内存参数》。

    在这个程序中,使用了一个名字叫做GlobalMemoryStatus的API函数。首先我们来看一下在VB中对这个函数的说明:
GlobalMemoryStatus Lib "kernel32" Alias "GlobalMemoryStatus" (lpBuffer As MEMORYSTATUS)As  Boolean 
    上面这一句话的意思就是:GlobalMemoryStatus函数是属于"kernel32"这个库的,在程序中调用时,正确的名字

为"GlobalMemoryStatus",这个函数具有一个参数,该参数是一个数据类型为内存状态的缓冲区。As Boolean是指这个函数执行后返回的是一个布尔型(即逻辑型)的数据。

什么为内存状态?这只是一种数据类型,在易语言所现有的数据类型里是没有的。所以,我们得自己建立这种数据类型。我们再寻找到内存状态的资料如下:

    dwLength As Long
    dwMemoryLoad As Long
    dwTotalPhys As Long
    dwAvailPhys As Long
    dwTotalPageFile As Long
    dwAvailPageFile As Long
    dwTotalVirtual As Long
    dwAvailVirtual As Long
它们一一对应的中文意思就是下面的这些:

     数据结构长度            数据类型:整数型
     内存使用百分比          数据类型:整数型
     实际内存总字节数        数据类型:整数型
     可用的实际内存字节数    数据类型:整数型
     分页文件总字节数        数据类型:整数型
     分页文件可用字节数      数据类型:整数型
     虚拟内存的总字节数      数据类型:整数型
     可用的虚拟内存字节数    数据类型:整数型

    有了这些资料,那么我们就可以应用这个API函数来得知我们的内存的一些状态了。即首先建立一个名字"内存状态"的新数据类型,然后再应用程序来读取详细的数据,具体程序的写法请参见《取内存参数》源程序。

    从这个函数中,我们就可以看出,我们所使用的那些API函数,在一般情况下都是有一些参数的,以前那些函数,他们的每一个参数都是需要我们在程序中给出参数的值,该函数才能执行,而这个函数,他也是需要一个参数,但是这个参数我们就不需要给他一个值,我们只需要设置一个容器(当然,这个容器的数据类型和这个参数的数据类型都必须设置为内存参数),这个函数就可以执行了。

所以,对于具有缓冲区的函数,我们就可以这样理解:我们放置一个容器在该缓冲区的位置,在该函数执行时,该函数会取出相应的数据放入缓冲区(即容器)中,这时,我们就可以直接读取出容器(即缓冲区)中的数据了。

    以上这些,就是整个《取内存参数》源程序的编程思路了。

    当然,这只是一个具有单独的缓冲区的API函数的应用,涉及到缓冲区的函数还有很多,比如说有的需要设置缓冲区的大小等。呵呵,这些就留在下一篇里再讲吧。

    以上内容只是浪花一个人的理解和看法,如果讲得不好或有错误,希望大家能给浪花提出来,浪花会尽快修改的。 

 

 
 

Copyright 2003-2008 All Rights Reserved 自由风工作室 版权没有 [湘ICP备06002185号]
.