aardio 文档

builtin.raw 库模块帮助文档

raw 成员列表 #

raw.byte() #

转换参数@1指定的数值为 byte 类型数值(8位整数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.byte 函数

返回对象:rawNumberObject

raw.convertArray(源内存指针,源数组长度,"数据类型") #

将指针指向的内存转换为普通数组,传入空指针返回空值
数据类型参数可省略,默认为"pointer"
类型类型也可以直接传入一个结构体实例对象。
注意该函数不会检测内存溢出错误,调用该函数时必须保证数组长度是正确的值

raw.copy #

复制内存数据

raw.copy(destPinterOrBuffer,srcData,size) #

复制内存数据。

raw.copy2 函数支持相同功能,但可以指定更多参数(可指定源内存与目标内存偏移量)

raw.copy2 #

复制内存。
此函数内部调用 raw.copy ,但 raw.copy2 可指定更多参数。

raw.copy2(destPinterOrBuffer,dstOffset,srcData,srcOffset,copySize) #

raw.double() #

转换参数@1指定的数值为 double 类型数值(64位浮点数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.double 函数

返回对象:rawNumberObject

raw.dup(源句柄,源进程,目标进程,允许子进程继承) #

返回复制的系统句柄
除参数1之外,其他参数可选
默认仅在当前进程中复制句柄
复制的句柄应使用raw.closehandle释放

raw.equal #

比较内存存储的数据是符相同。

注意 buffer 直接用 == 操作符只能比较地址不能比较内容,
但 aardio 中相同内容的字符串总是指向同一地址,因此字符串可以直接用 == 比较。

相关函数: string.cmp

raw.equal(data1,data2,size) #

二进制比较 @data1,@data2 存储的数据是否相同。

如果仅执行文本(不包含空字符 \0)比较应改用更合适的 string.cmp 函数。

raw.execute #

运行外部程序,成功返回 true。
process.execute 函数提供类似的功能,区别可参考函数源码

raw.execute(file,param,operation,showCmd,workDir,hwnd) #

运行外部程序,成功返回 true。
@file 指定要运行的程序路径,其他所有参数可省略,
@param 字符串参数,可选指定启动参数。
@operation 可选用一个字符串指定执行动词,省略则使用默认动词或 "open"。
@showCmd 可选用 SW 前缀常量指定显示选项,默认为 _SW_SHOW。
@workDir 参数可选指定工作目录。
@hwnd 可选指定所有窗口句柄,默认取当前线程活动窗口

raw.explore(path,args,...) #

使用资源管理器(Explorer.exe)打开文件或目录。
第一个参数 @path 指定文件路径,可为空值( null )。
注意 Explorer.exe 不解析标准的命令行参数转义符,这一点与其他程序不同。
如参数 @path 尾部有双反斜杠\\则为无效路径并打开默认目录(打开我的文档,XP系统报错)。
如参数 @path 指定为 ","或"file:" 则打开“此电脑(This PC)”。
如参数 @path 使用shell:::前缀则可以指定特殊路径的 CLSID。

可用第二个参数 @args 或更多参数指定 Explorer.exe 命令行选项,
例如指定 "/select" 在资源管理器选择指定路径。
注意 "/n" 等选项在新系统中是无意义的,Explorer 将总是打开新窗口。

raw.float() #

转换参数@1指定的数值为 float 类型数值(32位浮点数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.float 函数

返回对象:rawNumberObject

raw.int() #

转换参数@1指定的数值为 int 类型数值(32位整数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.int 函数

返回对象:rawNumberObject

raw.join(字节串数组,分隔字符串,起始索引,结束索引) #

拼接参数 @1 指定的字符串或 buffer 数组,返回 buffer 对象。

如果拼接后字节长度为 0,此函数返回 null。
起始索引与结束索引可用负数表示倒计数,索引溢出则自动设为最接近的有效索引。
如果转换后的起始索引大于结束索引此函数返回 null。

raw.len(buffer、字符串或结构体) #

返回参数 @1 指定的字符串、buffer 或结构体的字节长度。
传入其他类型参数返回 null 值。

相关函数: raw.sizeof

raw.long() #

转换参数@1指定的数值为 long 类型数值(64位整数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.long 函数

返回对象:rawNumberObject

raw.main #

进程主模块,默认调用约定为stdcall
与raw.module("stdcall")返回的值相同,
可用于将当前进程中的函数指针转换为aardio函数

返回对象:dllModuleObject

raw.mixin(指针,结构体对象,任意个混入表...) #

如果未指定参数 @3 此函数将参数 @2 指定的结构体复制到参数 @1 指定的内存,
然后返回结构体。

否则将参数 @1 指定的内存数据先复制到参数 @2 指定的结构体。
然后将后续的所有表参数(仅包含需要修改的字段)调用 table.assign 函数混入到结构体中。
然后再将被填充的结构体复制到参数 @1 指定的内存。

例如代码 raw.minxin(ptr,{int x;int y},{y=123}) 只会修改内存中的 y 字段。
raw.minxin(ptr,{int x;int y}) 则会将 x,y 字段都清零。

raw.module("调用约定") #

指定约定并返回进程主模块,
省略参数时调用约定默认为stdcall,
可用于将当前进程中的函数指针转换为aardio函数,

raw.module() #

返回对象:dllModuleObject

raw.serializeDupHandle("类名",句柄) #

复制进程内有效句柄并序列化对象
只能用于_serialize元方法,且必须kernelCall参数为真
序列化类构造函数必须支持指针参数1为指针类型句柄,参数2为true的参数
并负责在析构函数中调用 raw.closehandle 释放该句柄

raw.sizeof #

计算原生类型大小。

相关函数: raw.len

raw.sizeof( ) #

返回结构体、原生类型、动态指针内存长度。
参数 @1 可指定结构体、或包含原生类型名称的字符串。

raw.slice #

截取字节串并返回新的 buffer 对象。

raw.slice(buffferOrPtr,startIndex,endIndex,size) #

raw.typeOfArray() #

如果参数是一个包含原生数组的结构体,
返回原生类型名,以及数组字段名字。
如果是其他对象则返回 null 。

raw.ubyte() #

转换参数@1指定的数值为 BYTE 类型数值(8位无符号整数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.ubyte 函数,
注意在原生类型中使用大写的 BYTE 类型表示8位无符号整数

返回对象:rawNumberObject

raw.uint() #

转换参数@1指定的数值为 INT 类型数值(32位无符号整数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.uint 函数,
注意在原生类型中使用大写的 INT 类型表示32位无符号整数

返回对象:rawNumberObject

raw.ulong() #

参数@1可传入数值或 math.size64 对象,
返回适用于 LONG 类型数值(64位无符号整数)的包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.ulong 函数,
注意在原生类型中使用大写的 LONG 类型表示64位无符号整数

返回对象:rawNumberObject

raw.uword() #

转换参数@1指定的数值为 WORD 类型数值(16位无符号整数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.uword 函数,
注意在原生类型中使用大写的 WORD 类型表示16位无符号整数

返回对象:rawNumberObject

raw.word() #

转换参数@1指定的数值为 word 类型数值(16位整数)包装对象,
返回对象支持 tonumber tostring 等类型转换函数。

用于调用非声明式原生 API 函数的参数,
默认传值,参数@2为 true 则用于传址参数(传数值的指针)。

用于 COM 函数参数则总是传值, COM 函数也可使用 com.word 函数

返回对象:rawNumberObject

rawNumberObject 成员列表 #

rawNumberObject.value #

对象存储的数值

Markdown 格式