|
.版本 2
.支持库 shell
.数据类型 Hid_StatusPacket, , 公开
.成员 success, 整数型
.成员 errorCode, 整数型
.数据类型结束
.数据类型 Hid_HideObjectPacket, , 公开
.成员 dataSize, 整数型
.成员 objType, 整数型
.成员 path, 文本型, , "0"
.数据类型结束
.数据类型 HidContextInternal, , 公开
.成员 hdevice, 整数型
.数据类型结束
.数据类型 HidObjId, , 公开
.成员 id, 整数型
.数据类型结束
.子程序 SendIoctl_HideObjectPacket, Hid_StatusPacket, ,
.参数 context, HidContextInternal, 引用
.参数 path, 文本型
.参数 type, 整数型
.参数 objId, HidObjId, 引用
.局部变量 hide, Hid_HideObjectPacket
.局部变量 result, Hid_StatusPacket
.局部变量 size, 整数型
.局部变量 len, 整数型
.局部变量 total, 整数型
.局部变量 returned, 整数型
.局部变量 ioctlCode, 整数型
ioctlCode = &H222800
len = 取文本长度 (path)
如果 (len = 0 或 len > 1024)
result.success = 假
result.errorCode = 87 ; ERROR_INVALID_PARAMETER
返回 (result)
结束 如果
total = (len + 1) × 2
size = 取字节集长度 ({hide}) + total
hide.dataSize = total
hide.objType = type
hide.path = path
; 这里假设 DeviceIoControl 是一个可用的API调用
; 实际上,易语言中可能需要使用Windows API调用来实现DeviceIoControl的功能
; 下面的代码是一个占位符,表示调用了DeviceIoControl
.判断开始 (DeviceIoControl (context.hdevice, ioctlCode, {hide}, size, {result}, 取字节集长度 ({result}), returned, ) = 假)
result.success = 假
result.errorCode = 取最后错误 ()
返回 (result)
.默认
objId.id = 1 ; 假设设备会在成功调用后设置objId
.判断结束
返回 (result)
.子程序 DeviceIoControl, 逻辑型, 公开, 模拟DeviceIoControl的行为
.参数 hDevice, 整数型
.参数 dwIoControlCode, 整数型
.参数 lpInBuffer, 字节集
.参数 nInBufferSize, 整数型
.参数 lpOutBuffer, 字节集
.参数 nOutBufferSize, 整数型
.参数 lpBytesReturned, 整数型传址
.参数 lpOverlapped, 整数型
; 这里仅作模拟,实际应用中需要调用真实的Windows API
lpBytesReturned = nOutBufferSize
返回 (真) |
|