求教把几个win32汇编的代码换成C++的

stackoverlow 2011-12-11 01:24:52

externdef IID_IUnknown:IID
LPUNKNOWN typedef DWORD
LPPUNKNOWN typedef ptr LPUNKNOWN

IUnknown_QueryInterfaceProto typedef proto :DWORD, :DWORD, :DWORD
IUnknown_AddRefProto typedef proto :DWORD
IUnknown_ReleaseProto typedef proto :DWORD
IUnknown_QueryInterface typedef ptr IUnknown_QueryInterfaceProto
IUnknown_AddRef typedef ptr IUnknown_AddRefProto
IUnknown_Release typedef ptr IUnknown_ReleaseProto

IUnknown struct DWORD
QueryInterface IUnknown_QueryInterface ?
AddRef IUnknown_AddRef ?
Release IUnknown_Release ?
IUnknown ends
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;IMalloc Interface
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
externdef IID_IMalloc:IID
LPMALLOC typedef DWORD
LPPMALLOC typedef ptr LPMALLOC

IMalloc_AllocProto typedef proto :DWORD, :DWORD
IMalloc_ReallocProto typedef proto :DWORD, :DWORD, :DWORD
IMalloc_FreeProto typedef proto :DWORD, :DWORD
IMalloc_GetSizeProto typedef proto :DWORD, :DWORD
IMalloc_DidAllocProto typedef proto :DWORD, :DWORD
IMalloc_HeapMinimizeProto typedef proto :DWORD

IMalloc_Alloc typedef ptr IMalloc_AllocProto
IMalloc_Realloc typedef ptr IMalloc_ReallocProto
IMalloc_Free typedef ptr IMalloc_FreeProto
IMalloc_GetSize typedef ptr IMalloc_GetSizeProto
IMalloc_DidAlloc typedef ptr IMalloc_DidAllocProto
IMalloc_HeapMinimize typedef ptr IMalloc_HeapMinimizeProto

IMalloc struct DWORD
QueryInterface IUnknown_QueryInterface ?
AddRef IUnknown_AddRef ?
Release IUnknown_Release ?
Alloc IMalloc_Alloc ?
Realloc IMalloc_Realloc ?
Free IMalloc_Free ?
GetSize IMalloc_GetSize ?
DidAlloc IMalloc_DidAlloc ?
HeapMinimize IMalloc_HeapMinimize ?
IMalloc ends

invoke (IMalloc PTR [eax]).Free,@stMalloc,@pidlParent
invoke (IMalloc PTR [eax]).Release,@stMalloc

书上写的是个COM接口,用来实现选择目录的通用对话框
我不懂COM接口上面的那些看不懂不知道怎么写
我现在想把他用C++实现,上面那些代码要怎么写?
求教,顺便帮解释下COM接口之类的,谢了哈
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yisikaipu 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xuqiqw 的回复:]最后我想问下objidl.h是个什么头文件?用来干嘛的通常?
IMalloc *stMalloc;这是个什么结构?![/Quote]

这个头文件定义一部分COM接口啊

IMalloc就是一个内存管理的接口http://msdn.microsoft.com/en-us/library/windows/desktop/ms678425(v=VS.85).aspx
The IMalloc methods Alloc, Free, and Realloc are similar to the C library functions malloc, free, and realloc.

至于COM接口是什么,这个一言难尽……

stackoverlow 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xuqiqw 的回复:]
引用 5 楼 yisikaipu 的回复:
引用楼主 xuqiqw 的回复:invoke (IMalloc PTR [eax]).Free,@stMalloc,@pidlParent
invoke (IMalloc PTR [eax]).Release,@stMalloc

不需要你去写吧,直接包含头文件


C/C++ code

#include <objidl.h>
in……
[/Quote]
成了!太感谢了!
最后我想问下objidl.h是个什么头文件?用来干嘛的通常?
IMalloc *stMalloc;这是个什么结构?!
stackoverlow 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yisikaipu 的回复:]
引用楼主 xuqiqw 的回复:invoke (IMalloc PTR [eax]).Free,@stMalloc,@pidlParent
invoke (IMalloc PTR [eax]).Release,@stMalloc

不需要你去写吧,直接包含头文件


C/C++ code

#include <objidl.h>
int main() // 仅供示例,不完整,不要……
[/Quote]
我是在WIN32汇编看到的只有汇编版...没看到包含这个文件
我先这样试下看哈,这个是个什么头文件?IMalloc是个什么样的数据啊?
yisikaipu 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 xuqiqw 的回复:]invoke (IMalloc PTR [eax]).Free,@stMalloc,@pidlParent
invoke (IMalloc PTR [eax]).Release,@stMalloc[/Quote]

不需要你去写吧,直接包含头文件

#include <objidl.h>
int main() // 仅供示例,不完整,不要运行
{
IMalloc *p;
void *pidlParent;

p->Free(pidlParent);
p->Release();

return 0;
}
jackyjkchen 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuqiqw 的回复:]

invoke (IMalloc PTR [eax]).Release,@stMalloc
还有这里的(IMalloc PTR [eax]).Release不清楚什么意思
[/Quote]
这里貌似和虚函数表有关,不用去管寄存器的细节,只管调函数就行
stackoverlow 2011-12-11
  • 打赏
  • 举报
回复
invoke (IMalloc PTR [eax]).Release,@stMalloc
还有这里的(IMalloc PTR [eax]).Release不清楚什么意思
stackoverlow 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]
masm的宏汇编本类就和C语言结构类似

如函数声明
IMalloc_AllocProto typedef proto :DWORD, :DWORD
其实就是
IMalloc_AllocProto(DWORD,DWORD)
结构体也很清楚啊
[/Quote]
externdef IID_IUnknown:IID这句
这个东西我换成extern IID IID_IUnknown没用额,别的文件也找不到有这个声明
jackyjkchen 2011-12-11
  • 打赏
  • 举报
回复
masm的宏汇编本类就和C语言结构类似

如函数声明
IMalloc_AllocProto typedef proto :DWORD, :DWORD
其实就是
IMalloc_AllocProto(DWORD,DWORD)
结构体也很清楚啊
内容概要:本文围绕“基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略”展开研究,提出一种结合超局部模型(ULM)与扩张状态观测器(ESO)的无模型预测电流控制(MFPCC)改进方法,旨在提升永磁同步电机(PMSM)电流环的动态响应性能与抗干扰能力。该策略利用超局部模型对系统行为进行局部逼近,避免依赖精确数学模型,同时引入自抗扰控制中的ESO实时观测并补偿系统内外部扰动,有效抑制参数摄动、负载变化及模型不确定性带来的影响。研究通过Simulink搭建完整的控制系统仿真模型,对传统MFPCC与所提改进策略进行对比分析,验证了新方法在电流跟踪精度、响应速度和鲁棒性方面的优越性。; 适合人群:具备电机控制、现代控制理论及Simulink仿真基础的电气工程、自动化及相关专业的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高性能电机驱动系统中电流环控制器的设计与优化;②为无模型控制与自抗扰控制的融合应用提供技术参考;③支撑相关课题的仿真验证、论文复现与创新方法研究。; 阅读建议:建议读者结合Simulink仿真模型深入理解控制结构与参数整定过程,重点关注ESO的观测性能与扰动补偿机制,并可通过改变负载条件、参数偏差等工况进行鲁棒性测试,进一步掌握该改进策略的核心优势与适用边界。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧