Safeway将Windows CreateFile句柄转换为'long',反之亦然

时间:2015-04-01 08:02:08

标签: c++

将窗口CreateFile返回类型(" HANDLE")转换为长数据类型是否安全或正确?反之亦然,即HANDLE类型的长值? 如果方法是正确的,那么如何在Windows 7环境中完成? 32位处理会没问题,但任何可以处理64位版本的便携式代码都可以是最好的。

2 个答案:

答案 0 :(得分:1)

HANDLE可能是作为不透明指针实现的,因此将其强制转换为uintptr_t 不应该给您带来问题。 但它确实不安全。没有从实现定义的数据类型转换为整数是安全的,并且没有从指针到整数的转换是安全的。

指针应该仍然是指针。

不应转换实现定义的类型。

整数应保持整数。

答案 1 :(得分:0)

无法正确地将HANDLE投射到long并返回。

考虑到在64位Windows上,long长度为32位,HANDLE长度为64位。