C++将HMULTL转换为两个整数
我有一个调用LoadLibrary的x64应用程序,我必须将生成的HMODULE作为2个整数传递给另一个应用程序 我想把它转换成一个字符串,把它分为两部分,然后把结果转换成整数 我无法把它转换成字符串,你能帮忙吗C++将HMULTL转换为两个整数,c++,C++,我有一个调用LoadLibrary的x64应用程序,我必须将生成的HMODULE作为2个整数传递给另一个应用程序 我想把它转换成一个字符串,把它分为两部分,然后把结果转换成整数 我无法把它转换成字符串,你能帮忙吗 感谢您猜测应用程序需要64位句柄的上部和下部-我不确定64位机器上的句柄是否为64位 uint left = (hmodule & 0XFFFFFFFF00000000) >> 32; uint right = (hmodule & 0XFFFFFFFF);
感谢您猜测应用程序需要64位句柄的上部和下部-我不确定64位机器上的句柄是否为64位
uint left = (hmodule & 0XFFFFFFFF00000000) >> 32;
uint right = (hmodule & 0XFFFFFFFF);
如果句柄是32位的
uint left = (hmodule & 0XFFFF0000) >> 16;
uint right = (hmodule & 0XFFFF);
当然,转换为字符串etc将不起作用最终我使用的是具有高部分和低部分的,如下所示:
ULARGE_INTEGER long_address;
long_address.QuadPart = (ULONGLONG)address;
fprintf(file, "%d,%d", long_address.HighPart, long_address.LowPart);
一个应用程序中的HMODULE在另一个应用程序中无效,因为它们具有不同的虚拟内存布局,HMODULE基本上是一个指针。您不能在进程之间共享指针。@HansPassant,由于我的工作合同,我无法透露我问题的全部细节。@interjay,我使用的是已知的DLL,如ntdll和ole32,因此它们的地址对于所有进程都是相同的。您在移位之前将相关位归零,所以左边将是0。您需要首先转换为整数类型。但正如我在上面的评论中所说,这个问题的整个前提是错误的。