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函数的应用,涉及到缓冲区的函数还有很多,比如说有的需要设置缓冲区的大小等。呵呵,这些就留在下一篇里再讲吧。
以上内容只是浪花一个人的理解和看法,如果讲得不好或有错误,希望大家能给浪花提出来,浪花会尽快修改的。
|