VB 内存分配与流读写 代码

qizhicong2 qizhicong2 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Option Explicit
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读写内存

p70p70

VB.NET游戏开发入门与实战项目教程

本章围绕 GDI+ 和 DirectX 两个图形绘制框架展开,详细讲解了 VB.NET 中的 2D 图形绘制、动画实现与资源管理技术。从基础绘图操作到动画控制,再到高性能 Direct2D 渲染与精灵图动画实现,内容层层递进,帮助开发者构建图形化游戏界面的基础能力。后续章节将进一步探讨音频集成与输入处理等关键游戏开发模块。为了提高游戏的可配置性,建议将输入事件与游戏命令进行绑定。例如,可以通过配置文件定义“跳跃”对应按键为空格键,而“射击”对应鼠标左键。

Clown爱电脑

高级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

gfarmer
评论 2
收藏 已收藏
分享
返回顶部
qizhicong2
VBA 2,506 成员 10,830 内容