除去在DllMain中保存DLL的实例句柄,还有没有其它办法在Dll中获取自身DLL的实例句柄

除了在DllMain中保存DLL的实例句柄,还有没有其它办法在Dll中获取自身DLL的实例句柄?
如题:
一个EXE加载了一个DLL。我想在DLL中动态的获取DLL本身的实例句柄.有没有什么方法?
我不想使用DllMain中保存全局句柄的方法。
------解决方案--------------------
inline static HMODULE GetCurrentModule(BOOL bRef)
{
HMODULE hModule = NULL;
if (GetModuleHandleEx(bRef ? GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS : (GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 
------解决方案--------------------
 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), (LPCWSTR)GetCurrentModule, &hModule))
{
return hModule;
}
return NULL;
}

------解决方案--------------------
糟糕,有个小bug,PE文件的DOS头魔法字MZ后面不一定是9000
改进版
	HANDLE handle = NULL ;
try
{
__asm {
lea eax,get_label
and eax,0xFFFFF000
get_Label:
sub eax,0x1000
cmp word ptr [eax],0x5A4D
jne get_Label
mov handle,eax
}
}
catch (...)
{
}
printf("0x%p\r\n", handle);