This is a macro that is usually declared in the header of the Windows SDK, the BaseTsd.h header file. When compiling in 32-bit mode, it is determined as shown. When compiled in 64-bit mode, it is defined as
#define POINTER_32 __ptr32
which is an extension of the MSVC compiler for declaring 32-bit pointers in a 64-bit code model. There is also a 32-bit code for a 32-bit code:
#define POINTER_64 __ptr64
You would use it if you are writing a 64-bit program and must interact with structures that are used by 32-bit code in another process. For instance:
typedef struct _SCSI_PASS_THROUGH_DIRECT32 { USHORT Length; UCHAR ScsiStatus; UCHAR PathId; UCHAR TargetId; UCHAR Lun; UCHAR CdbLength; UCHAR SenseInfoLength; UCHAR DataIn; ULONG DataTransferLength; ULONG TimeOutValue; VOID * POINTER_32 DataBuffer;
source share