TypeInfo::AddressOfMember

本文详细介绍了如何使用MSDN Library中的ITypeInfo::AddressOfMember方法来检索DLL中静态函数或变量的地址,并通过示例程序演示了实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:http://msdn.microsoft.com/en-us/library/windows/desktop/ms221544%28v=vs.85%29.aspx

下面是汉字版的:

检索静态函数或变量(如那些在 DLL 中定义的静态函数或变量)的地址。

void AddressOfMember(
   int memid,
   INVOKEKIND invKind,
   [
   Out
] IntPtr* ppv
);
参数
memid
要检索的 static (Shared in Visual Basic) 成员地址的成员 ID。
invKind
指定该成员是否为属性,如果是,还指定是哪种属性。
ppv
成功返回时,为对 static (Shared in Visual Basic) 成员的一个引用。
备注

有关 ITypeInfo::AddressOfMember 的其他信息,请参见 MSDN Library。

要求

平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列

------下面是我的一段程序片段---------------------------------------------------------

LPTYPEINFO lpRefTypeInfo;
LPTYPEATTR lpRefTypeAttr;
pDisp->GetTypeInfo(0, 0, &lpRefTypeInfo);
HRESULT hr = lpRefTypeInfo->GetTypeAttr(&lpRefTypeAttr);
for (int Index = 0; Index < lpRefTypeAttr->cFuncs; Index++ )
{
	LPFUNCDESC lpFuncDesc;
	ULONG FunAddr;

	hr = lpRefTypeInfo->GetFuncDesc(Index, &lpFuncDesc);
	if ( hr != S_OK ) 
	{
		continue;
	}

	void** p = NULL;
	hr = lpRefTypeInfo->AddressOfMember(lpFuncDesc->memid, lpFuncDesc->invkind, p);
	//hr = E_NOTIMPL,可能因为这个函数不是静态成员函数或变量吧
}

参考:http://www.vckbase.com/index.php/wv/1238


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值