There are few *_PTR
types added to the Windows API in order to support Win64's 64bit addressing.
SetItemData(int nIndex,DWORD_PTR dwItemData)
This API works for both 64 and 32 bit machines when I pass second parameter as DWORD
.
I want to know, if this particular API will fail on 64 bit machine, if I pass the second parameter as DWORD
. How can I test the fail scenario?
Thanks, Nikhil
The function will not fail if you pass a
DWORD
, because it fits into aDWORD_PTR
. A pointer, however, is guaranteed to fit into aDWORD_PTR
but not into aDWORD
on 64-bit platforms.Thus, this code is correct:
But this code is wrong and will silently truncate the pointer to its lower 32 bits: