Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++将HMULTL转换为两个整数_C++ - Fatal编程技术网

C++将HMULTL转换为两个整数

C++将HMULTL转换为两个整数,c++,C++,我有一个调用LoadLibrary的x64应用程序,我必须将生成的HMODULE作为2个整数传递给另一个应用程序 我想把它转换成一个字符串,把它分为两部分,然后把结果转换成整数 我无法把它转换成字符串,你能帮忙吗 感谢您猜测应用程序需要64位句柄的上部和下部-我不确定64位机器上的句柄是否为64位 uint left = (hmodule & 0XFFFFFFFF00000000) >> 32; uint right = (hmodule & 0XFFFFFFFF);

我有一个调用LoadLibrary的x64应用程序,我必须将生成的HMODULE作为2个整数传递给另一个应用程序

我想把它转换成一个字符串,把它分为两部分,然后把结果转换成整数

我无法把它转换成字符串,你能帮忙吗


感谢您猜测应用程序需要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。您需要首先转换为整数类型。但正如我在上面的评论中所说,这个问题的整个前提是错误的。