DWORD dwAddr = (DWORD)GetProcAddress(GetModuleHandleA("user32.dll"),"MessageBoxA");
假设MessageBoxA地址是0x1234abcd 。 我想要的是这样的:
char *func_name = this_is_what_i_want(0x1234abcd); printf("%s",func_name); // this will print "MessageBoxA"
操作系统:Windows
libeio在windows上
确定HWND是否代表顶级窗口的最佳方法是什么?
区分由cl.exe生成的64位PE对象文件(Visual Studio C ++)
最好的方法来检查许可证
获取.NET枚举的Windows本地化
每个线程组的线程互斥
使用VC ++ express编程windows
setuid()返回0,但没有效果
更快的方式来读取文件比boost :: file_mapping?
使用SYMBOL_INFO结构的SymFromAddr 。 该结构将包含Name成员中的Name 。
SYMBOL_INFO的分配内存非常棘手,请务必阅读文档。
如何分配SYMBOL_INFO:
const size_t array_size = 256 ; const size_t size = sizeof( SYMBOL_INFO ) + ( array_size-1 )*sizeof( TCHAR ) ; SYMBOL_INFO* symbol = calloc( 1,size ) ; if( !symbol ) { //deal with it } symbol->SizeOfStruct = sizeof( *symbol ) ; //both values must symbol->MaxNameLen = array_size ; //be set by user
请注意,我们在这里减1: ( array_size-1 )因为结构已经给我们一个字节,我们希望我们的字符串数组大小为256而不是257。
这个结构现在有足够的空间来存放长度为255的字符串。