ViceDinoSpecCtrl.cpp

博客介绍了C++应用程序相关内容,包括CWinApp::ExitInstance函数用于退出应用程序实例,还提及GlobalAlloc、GlobalFree等内存操作函数,以及BYTE_PTR和WORD_PTR对内存单元访问的影响,同时给出了部分函数的示例和相关链接。

tagCR_INSTALL_INFOA Struct Reference

http://repo.isis.vanderbilt.edu/doxygen/gme/nightly/structtagCR__INSTALL__INFOA.html

CWinApp::ExitInstance

由框架调用内Run成员函数以退出应用程序的此实例。

virtual int ExitInstance();

返回值

应用程序的退出代码;0 表示没有错误,而大于 0 的值指示错误。 此值用作从返回的值WinMain

备注

不要调用此成员函数从任何位置之内Run成员函数。

此函数的默认实现将写入应用程序的框架选项。INI 文件。 重写此函数来清理您的应用程序终止时。

示例

int CMyApp::ExitInstance() {

if (m_pMySampleMem)

delete m_pMySampleMem;

DoCleanup();

return CWinApp::ExitInstance(); }

 

GlobalAlloc

https://baike.baidu.com/item/GlobalAlloc/9322541?fr=aladdin

GetFileVersionInfo

https://baike.baidu.com/item/GetFileVersionInfo

https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms890951(v%3dmsdn.10)

VerQueryValue

https://docs.microsoft.com/en-us/previous-versions/aa909243(v%3dmsdn.10)

https://baike.baidu.com/item/VerQueryValue

GetFileVersionInfoSize

https://baike.baidu.com/item/GetFileVersionInfoSize

https://docs.microsoft.com/en-us/previous-versions/aa914421(v%3dmsdn.10)

BYTE_PTR和WORD_PTR

前者指明了指令访问的内存单元是一个字节单元,也就是8位,也就是最大的数为 0FFH,化成10进制数为256,指令访问的是内存,是因为加方括号的都是存储器寻址,方括号里的DI是变址寄存器,整个代表以DI里的内容作为偏移地址,然后以(DS)*16+(DI)得到的值作为在存储器里的物理地址
要是没有BYTE PTR的话,那个物理地址对应的是低字节的内容,然后物理地址加1对应的物理地址对应的才是高字节的内容。有了BYTE PTR后只要取该物理地址对应的一个字节的内容即可
比如说MOV BYTE PTR[BX] 10H
源操作数用的是立即寻址,相当于直接赋值10H,目的操作数用的是寄存器间接寻址,假设BX里的内容(BX)=1000H,(DS)=2000H,那么对应的物理地址为21000H,现在这个物理地址对应的单元内容是10H
WORD PTR表示指令访问的内存单元是两个字节单元

 

GlobalAlloc

https://baike.baidu.com/item/GlobalAlloc/9322541?fr=aladdin

GlobalUnlock

https://baike.baidu.com/item/GlobalUnlock/1918756?fr=aladdin

GlobalFree

HGLOBAL GlobalFree( HGLOBAL hMem // 指向全局变量的句柄

);

hMem是有 GlobalAlloc 或者 GlobalReAlloc 函数返回的

该函数是释放指定的全局内存块。在调用了这个函数以后,hMem 句柄就不再有效。注意调用这个函数的时候,内存块不会进入锁定状态。

返回值:如果函数成功返回NULL

如果失败返回hMem 获得错误信息可以调用GetLastError函数。

PS:内存释放后,企图向那个内存块写入的任何数据都可能造成进程堆的崩溃,导致严重的异常错误。

 

LoadIcon

https://baike.baidu.com/item/LoadIcon/552203?fr=aladdin

AppendMenu

https://baike.baidu.com/item/AppendMenu

精选资源
Student.cpp
04-12
cmake_minimum_required(VERSION 3.10) project(mutator) add_compile_options(-g -O2) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找 Boost 库 find_package(Boost REQUIRED program_options) # 如果 Boost 安装在非默认路径,可以指定 Boost 的根目录 # set(BOOST_ROOT "/path/to/boost") # set(Boost_NO_SYSTEM_PATHS TRUE) #find_package(ICU REQUIRED COMPONENTS uc ucdata ucp ucptrie) # 添加可执行文件 add_executable( mutator main.cpp mutators/base.cpp mutators/config.cpp data_types/string_.cpp data_types/StringBase.cpp data_types/NumberBase.cpp data_types/DoubleBase.cpp data_types/Number.cpp data_types/Double.cpp data_types/VirtualBase.cpp data_types/ArrayBase.cpp data_types/BlobBase.cpp data_types/Blob.cpp mutators/MutatorFactory.cpp mutators/utils.cpp utils/sample_util.cpp utils/UniversalString.cpp mutators/string/StringCaseRandom.cpp data_types/TypeBase.cpp mutators/number/NumberRandom.cpp mutators/number/NumberVariance.cpp mutators/number/NumberEdgeCase.cpp mutators/string/StringCaseLower.cpp mutators/string/StringAsciiRandom.cpp mutators/string/StringCaseUpper.cpp mutators/string/StringStatic.cpp mutators/string/StringUnicodeInvalid.cpp mutators/string/StringUnicodeNonCharacters.cpp mutators/string/StringUnicodePrivateUseArea.cpp mutators/string/StringLengthVariance.cpp mutators/string/StringLengthEdgeCase.cpp mutators/string/StringFormatRandom.cpp mutators/string/StringUtf8BomLength.cpp mutators/string/StringUtf8BomStatic.cpp mutators/double/DoubleEdgeCase.cpp mutators/double/DoubleRandom.cpp mutators/double/DoubleVariance.cpp mutators/double/DoubleEdgeCase.cpp mutators/blob/BlobChangeFromNull.cpp mutators/blob/BlobChangeRandom.cpp mutators/blob/BlobChangeSpecial.cpp mutators/blob/BlobChangeToNull.cpp mutators/blob/BlobExpandAllRandom.cpp mutators/blob/BlobExpandSingleIncrementing.cpp mutators/blob/BlobExpandSingleRandom.cpp mutators/blob/BlobExpandZero.cpp mutators/blob/BlobReduce.cpp ) # 包含 Boost 的头文件路径 target_include_directories(mutator PRIVATE ${Boost_INCLUDE_DIRS}) # 链接 Boost 的 program_options 库 target_link_libraries(mutator PRIVATE ${Boost_LIBRARIES}) 功能不变 优化填写方式
07-03
为了优化 `CMakeLists.txt` 的可读性和维护性,我们可以: 1. **使用变量管理源文件列表**:避免在 `add_executable()` 中写入冗长的源文件列表。 2. **模块化代码结构**:将不同目录的源文件归类为变量。 3. **使用更清晰的注释和格式化方式**。 --- ### 优化后的 CMakeLists.txt ```cmake cmake_minimum_required(VERSION 3.10) project(mutator) # 编译选项 add_compile_options(-g -O2) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找 Boost 库 find_package(Boost REQUIRED program_options) # 定义各模块的源文件路径 set(SRC_MUTATORS mutators/base.cpp mutators/config.cpp mutators/MutatorFactory.cpp mutators/utils.cpp mutators/string/StringCaseRandom.cpp mutators/string/StringAsciiRandom.cpp mutators/string/StringCaseLower.cpp mutators/string/StringCaseUpper.cpp mutators/string/StringStatic.cpp mutators/string/StringUnicodeInvalid.cpp mutators/string/StringUnicodeNonCharacters.cpp mutators/string/StringUnicodePrivateUseArea.cpp mutators/string/StringLengthVariance.cpp mutators/string/StringLengthEdgeCase.cpp mutators/string/StringFormatRandom.cpp mutators/string/StringUtf8BomLength.cpp mutators/string/StringUtf8BomStatic.cpp mutators/number/NumberRandom.cpp mutators/number/NumberVariance.cpp mutators/number/NumberEdgeCase.cpp mutators/double/DoubleRandom.cpp mutators/double/DoubleVariance.cpp mutators/double/DoubleEdgeCase.cpp mutators/blob/BlobChangeFromNull.cpp mutators/blob/BlobChangeRandom.cpp mutators/blob/BlobChangeSpecial.cpp mutators/blob/BlobChangeToNull.cpp mutators/blob/BlobExpandAllRandom.cpp mutators/blob/BlobExpandSingleIncrementing.cpp mutators/blob/BlobExpandSingleRandom.cpp mutators/blob/BlobExpandZero.cpp mutators/blob/BlobReduce.cpp ) set(SRC_DATA_TYPES data_types/string_.cpp data_types/StringBase.cpp data_types/NumberBase.cpp data_types/DoubleBase.cpp data_types/Number.cpp data_types/Double.cpp data_types/VirtualBase.cpp data_types/ArrayBase.cpp data_types/BlobBase.cpp data_types/Blob.cpp data_types/TypeBase.cpp ) set(SRC_UTILS utils/sample_util.cpp utils/UniversalString.cpp ) # 主程序入口 set(SRC_MAIN main.cpp) # 合并所有源文件 set(SRC_ALL ${SRC_MAIN} ${SRC_MUTATORS} ${SRC_DATA_TYPES} ${SRC_UTILS} ) # 添加可执行文件 add_executable(mutator ${SRC_ALL}) # 包含 Boost 头文件路径 target_include_directories(mutator PRIVATE ${Boost_INCLUDE_DIRS}) # 链接 Boost 的 program_options 库 target_link_libraries(mutator PRIVATE ${Boost_LIBRARIES}) ``` --- ### 解释说明: - `set(SRC_MUTATORS ...)` 等变量定义是为了更好地组织源码路径,使 `add_executable` 更简洁。 - 使用了模块化分组(mutators、data_types、utils)便于后期扩展与维护。 - 保留原有的 Boost 依赖查找逻辑,保证功能不变。 - 注释更加清晰,方便新开发者快速理解项目结构。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值