VB 内存分配与流读写 代码
Private Declare Function VirtualAlloc()Function VirtualAlloc Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function VirtualFree()Function VirtualFree Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function VirtualLock()Function VirtualLock Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long) As Long
Private Declare Function VirtualUnlock()Function VirtualUnlock Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long) As Long
Private Declare Function IsBadReadPtr()Function IsBadReadPtr Lib "kernel32" (ByVal lp As Long, ByVal ucb As Long) As Long
Private Declare Function IsBadWritePtr()Function IsBadWritePtr Lib "kernel32" (ByVal lp As Long, ByVal ucb As Long) As Long
Private Declare Function IsBadStringPtr()Function IsBadStringPtr Lib "kernel32" Alias "IsBadStringPtrA" (ByVal lpsz As Long, ByVal ucchMax As Long) As Long
Private Declare Function lstrcpy()Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpStringDest As String, ByVal lpStringSrc As Long) As Long
Private Declare Function lstrlen()Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long
Private Declare Sub CopyMemory()Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal pDest As Long, ByVal pSrc As Long, ByVal ByteLen As Long)
Private Const MEM_DECOMMIT = &H4000
Private Const MEM_RELEASE = &H8000
Private Const MEM_COMMIT = &H1000
Private Const PAGE_EXECUTE_READWRITE = &H40
Private m_Handle As Long
Public Property Get()Property Get Handle() As Long
Handle = m_Handle
End Property
''分配内存
Public Sub Allocate()Sub Allocate(ByVal lCount As Long)
Call Release
m_Handle = VirtualAlloc(ByVal 0&, lCount, MEM_COMMIT, PAGE_EXECUTE_READWRITE)
VirtualLock m_Handle, lCount
End Sub
''读取
Public Sub ReadFromPointer()Sub ReadFromPointer(ByVal hWritePointer As Long, ByVal lLength As Long)
If IsBadWritePtr(hWritePointer, lLength) = 0 And IsBadReadPtr(Handle, lLength) = 0 Then
CopyMemory hWritePointer, Handle, lLength
End If
End Sub
''写入
Public Sub WriteToPointer()Sub WriteToPointer(ByVal hReadPointer As Long, ByVal lLength As Long)
If IsBadReadPtr(hReadPointer, lLength) = 0 And IsBadWritePtr(Handle, lLength) = 0 Then
CopyMemory Handle, hReadPointer, lLength
End If
End Sub
''释放内存
Public Sub Release()Sub Release()
Dim lLength As Long
If m_Handle <> 0 Then
VirtualUnlock m_Handle, lLength
VirtualFree m_Handle, lLength, MEM_DECOMMIT
VirtualFree m_Handle, 0, MEM_RELEASE
m_Handle = 0
End If
End Sub
Private Sub Class_Terminate()Sub Class_Terminate()
Call Release
End Sub
-
欢迎光临DIY部落,点击这里查看更多文章教程
文章出处:http://www.diybl.com/course/3_program/vb/2008331/107844.html
相关推荐
vb读写内存vb读写内存
vb读写内存 vb读写内存 vb读写内存
VB.NET游戏开发入门与实战项目教程
本章围绕 GDI+ 和 DirectX 两个图形绘制框架展开,详细讲解了 VB.NET 中的 2D 图形绘制、动画实现与资源管理技术。从基础绘图操作到动画控制,再到高性能 Direct2D 渲染与精灵图动画实现,内容层层递进,帮助开发者构建图形化游戏界面的基础能力。后续章节将进一步探讨音频集成与输入处理等关键游戏开发模块。为了提高游戏的可配置性,建议将输入事件与游戏命令进行绑定。例如,可以通过配置文件定义“跳跃”对应按键为空格键,而“射击”对应鼠标左键。
高级VB编程实战:API调用、串口通信与工业系统集成指南
在软件开发领域,经典编程语言从未真正退出舞台,而是在工业自动化、系统集成等特定场景中持续发挥价值。VB(Visual Basic)凭借其极低的运行时依赖和强大的Windows底层交互能力,成为维护老系统、开发工控辅助工具的高效选择。理解Windows API的声明与调用原理,可以让开发者突破语言自身限制,实现键盘模拟、注册表操作等系统级功能;掌握MSComm串口通信机制,则能轻松对接各类工业仪表和设备。同时,VB在网络请求、文件下载以及工控组态软件(如WinCC)集成方面同样具备成熟方案。对于工程实践者而言
VB.NET面向对象编程课程设计系列(5)
面向对象编程是一种组织代码的方式,它侧重于创建可重用、模块化的代码块。OOP的主要目的是通过模拟现实世界中对象的行为来简化软件开发和维护。在面向对象编程中,类(Class)是一组包含数据以及可以操作这些数据的代码的蓝图。它定义了创建对象时使用的基本结构和行为,对象是类的实例。在VB.NET中定义一个类的基本语法如下:' 类的成员定义End Class实例化类的过程称为创建对象。
vb6 excel读写模块源代码
vb6直接读取 excel读写模块源代码 不需要客户安装有excel


