I've been trying to implement action mapping in my AlphaInput engine, but I'm a little puzzled about a few things.

Microsoft define the DIACTION stucture with a field named uAppData of type UINT_PTR. In the Delphi (JEDI) version (DirectInput8.pas), the uAppData member of TDIAction is defined as a pointer. According to the DirectX help file, uAppData should be a pointer to a value to be returned in the uAppData member of the DIDDEVICEDATA structure. However, in the C++ sample program, Multimapper, they pass various constant values in the uAppData member, not pointers, and the value which is returned is exactly the same piece of data. So, what exactly is a UINT_PTR, and should I just use a DWORD instead of a pointer?