求教把几个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接口之类的,谢了哈
...全文
120 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)
结构体也很清楚啊

64,654

社区成员

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

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