Windows Data Types


The data types supported by Microsoft® Windows® are used to define function return values, function and message parameters, and structure members. They define the size and meaning of these elements. For more information about the underlying C/C++ data types, see Data Type Ranges.


The following table contains the following types: character, integer, Boolean, pointer, and handle. The character, integer, and Boolean types are common to most C compilers. Most of the pointer-type names begin with a prefix of P or LP. Handles refer to a resource that has been loaded into memory.

For more information about handling 64-bit integers, see Large Integers.


Term Description
ATOM Atom. For more information, see Atoms.
This type is declared in WinDef.h as follows:


typedef WORD ATOM;

BOOL Boolean variable (should be TRUE or FALSE).
This type is declared in WinDef.h as follows:


typedef int BOOL;

BOOLEAN Boolean variable (should be TRUE or FALSE).
This type is declared in WinNT.h as follows:


typedef BYTE BOOLEAN;

BYTE Byte (8 bits).
This type is declared in WinDef.h as follows:


typedef unsigned char BYTE;

CALLBACK Calling convention for callback functions.
This type is declared in WinDef.h as follows:


#define CALLBACK __stdcall

CHAR 8-bit Windows (ANSI) character. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef char CHAR;

COLORREF Red, green, blue (RGB) color value (32 bits). See COLORREF for information on this type.
This type is declared in WinDef.h as follows:


typedef DWORD COLORREF;

CONST Variable whose value is to remain constant during execution.
This type is declared in WinDef.h as follows:


#define CONST const

DWORD 32-bit unsigned integer.
This type is declared in WinDef.h as follows:


typedef unsigned long DWORD;

DWORDLONG 64-bit unsigned integer.
This type is declared in WinNT.h as follows:


typedef ULONGLONG DWORDLONG;

DWORD_PTR Unsigned long type for pointer precision. Use when casting a pointer to a long type to perform pointer arithmetic. (Also commonly used for general 32-bit parameters that have been extended to 64 bits in 64-bit Windows. )
This type is declared in BaseTsd.h as follows:


typedef ULONG_PTR DWORD_PTR;

DWORD32 32-bit unsigned integer.
This type is declared in BaseTsd.h as follows:


typedef unsigned int DWORD32;

DWORD64 64-bit unsigned integer.
This type is declared in BaseTsd.h as follows:


typedef unsigned __int64 DWORD64;

FLOAT Floating-point variable.
This type is declared in WinDef.h as follows:


typedef float FLOAT;

HACCEL Handle to an accelerator table.
This type is declared in WinDef.h as follows:


typedef HANDLE HACCEL;

HALF_PTR Half the size of a pointer. Use within a structure that contains a pointer and two small fields.
This type is declared in Basetsd.h as follows:


#ifdef _WIN64
typedef int HALF_PTR;
#else
typedef short HALF_PTR;
#endif

HANDLE Handle to an object.
This type is declared in WinNT.h as follows:


typedef PVOID HANDLE;

HBITMAP Handle to a bitmap.
This type is declared in WinDef.h as follows:


typedef HANDLE HBITMAP;

HBRUSH Handle to a brush.
This type is declared in WinDef.h as follows:


typedef HANDLE HBRUSH;

HCOLORSPACE Handle to a color space.
This type is declared in WinDef.h as follows:


#if(WINVER >= 0x0400)
typedef HANDLE HCOLORSPACE;
#endif

HCONV Handle to a dynamic data exchange (DDE) conversation.
This type is declared in Ddeml.h as follows:


typedef HANDLE HCONV;

HCONVLIST Handle to a DDE conversation list.
This type is declared in Ddeml.h as follows:


typedef HANDLE HCONVLIST;

HCURSOR Handle to a cursor.
This type is declared in WinDef.h as follows:


typedef HICON HCURSOR;

HDC Handle to a device context (DC).
This type is declared in WinDef.h as follows:


typedef HANDLE HDC;

HDDEDATA Handle to DDE data.
This type is declared in Ddeml.h as follows:


typedef HANDLE HDDEDATA;

HDESK Handle to a desktop.
This type is declared in WinDef.h as follows:


typedef HANDLE HDESK;

HDROP Handle to an internal drop structure.
This type is declared in ShellApi.h as follows:


typedef HANDLE HDROP;

HDWP Handle to a deferred window position structure.
This type is declared in WinUser.h as follows:


typedef HANDLE HDWP;

HENHMETAFILE Handle to an enhanced metafile.
This type is declared in WinDef.h as follows:


typedef HANDLE HENHMETAFILE;

HFILE Handle to a file opened by OpenFile, not CreateFile.
This type is declared in WinDef.h as follows:


typedef int HFILE;

HFONT Handle to a font.
This type is declared in WinDef.h as follows:


typedef HANDLE HFONT;

HGDIOBJ Handle to a GDI object.
This type is declared in WinDef.h as follows:


typedef HANDLE HGDIOBJ;

HGLOBAL Handle to a global memory block.
This type is declared in WinDef.h as follows:


typedef HANDLE HGLOBAL;

HHOOK Handle to a hook.
This type is declared in WinDef.h as follows:


typedef HANDLE HHOOK;

HICON Handle to an icon.
This type is declared in WinDef.h as follows:


typedef HANDLE HICON;

HINSTANCE Handle to an instance.
This type is declared in WinDef.h as follows:


typedef HANDLE HINSTANCE;

HKEY Handle to a registry key.
This type is declared in WinDef.h as follows:


typedef HANDLE HKEY;

HKL Input locale identifier.
This type is declared in WinDef.h as follows:


typedef HANDLE HKL;

HLOCAL Handle to a local memory block.
This type is declared in WinDef.h as follows:


typedef HANDLE HLOCAL;

HMENU Handle to a menu.
This type is declared in WinDef.h as follows:


typedef HANDLE HMENU;

HMETAFILE Handle to a metafile.
This type is declared in WinDef.h as follows:


typedef HANDLE HMETAFILE;

HMODULE Handle to a module. The value is the base address of the module.
This type is declared in WinDef.h as follows:


typedef HINSTANCE HMODULE;

HMONITOR Handle to a display monitor.
This type is declared in WinDef.h as follows:


if(WINVER >= 0x0500) typedef HANDLE HMONITOR;

HPALETTE Handle to a palette.
This type is declared in WinDef.h as follows:


typedef HANDLE HPALETTE;

HPEN Handle to a pen.
This type is declared in WinDef.h as follows:


typedef HANDLE HPEN;

HRESULT Return code used by interfaces. It is zero upon success and nonzero to represent an error code or status information.
This type is declared in WinNT.h as follows:


typedef LONG HRESULT;

HRGN Handle to a region.
This type is declared in WinDef.h as follows:


typedef HANDLE HRGN;

HRSRC Handle to a resource.
This type is declared in WinDef.h as follows:


typedef HANDLE HRSRC;

HSZ Handle to a DDE string.
This type is declared in Ddeml.h as follows:


typedef HANDLE HSZ;

HWINSTA Handle to a window station.
This type is declared in WinDef.h as follows:


typedef HANDLE WINSTA;

HWND Handle to a window.
This type is declared in WinDef.h as follows:


typedef HANDLE HWND;

INT 32-bit signed integer.
This type is declared in WinDef.h as follows:


typedef int INT;

INT_PTR Signed integer type for pointer precision. Use when casting a pointer to an integer to perform pointer arithmetic.
This type is declared in BaseTsd.h as follows:


#if defined(_WIN64)
typedef __int64 INT_PTR;
#else
typedef int INT_PTR;
#endif

INT32 32-bit signed integer.
This type is declared in BaseTsd.h as follows:


typedef signed int INT32;

INT64 64-bit signed integer.
This type is declared in BaseTsd.h as follows:


typedef signed __int64 INT64;

LANGID Language identifier. For more information, see Locales.
This type is declared in WinNT.h as follows:


typedef WORD LANGID;

LCID Locale identifier. For more information, see Locales.
This type is declared in WinNT.h as follows:


typedef DWORD LCID;

LCTYPE Locale information type. For a list, see Locale and Language Information.
This type is declared in WinNls.h as follows:


typedef DWORD LCTYPE;

LGRPID Language group identifier. For a list, see EnumLanguageGroupLocales.
This type is declared in WinNls.h as follows:


typedef DWORD LGRPID;

LONG 32-bit signed integer.
This type is declared in WinNT.h as follows:


typedef long LONG;

LONGLONG 64-bit signed integer.
This type is declared in WinNT.h as follows:


#if !defined(_M_IX86)
typedef __int64 LONGLONG;
#else
typedef double LONGLONG;
#endif

LONG_PTR Signed long type for pointer precision. Use when casting a pointer to a long to perform pointer arithmetic.
This type is declared in BaseTsd.h as follows:


#if defined(_WIN64)
typedef __int64 LONG_PTR;
#else
typedef long LONG_PTR;
#endif

LONG32 32-bit signed integer.
This type is declared in BaseTsd.h as follows:


typedef signed int LONG32;

LONG64 64-bit signed integer.
This type is declared in BaseTsd.h as follows:


typedef __int64 LONG64;

LPARAM Message parameter.
This type is declared in WinDef.h as follows:


typedef LONG_PTR LPARAM;

LPBOOL Pointer to a BOOL.
This type is declared in WinDef.h as follows:


typedef BOOL far *LPBOOL;

LPBYTE Pointer to a BYTE.
This type is declared in WinDef.h as follows:


typedef BYTE far *LPBYTE;

LPCOLORREF Pointer to a COLORREF value.
This type is declared in WinDef.h as follows:


typedef DWORD *LPCOLORREF;

LPCSTR Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef __nullterminated CONST CHAR *LPCSTR;

LPCTSTR An LPCWSTR if UNICODE is defined, an LPCSTR otherwise.
This type is declared in WinNT.h as follows:


#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif

LPCVOID Pointer to a constant of any type.
This type is declared in WinDef.h as follows:


typedef CONST void *LPCVOID;

LPCWSTR Pointer to a constant null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef CONST WCHAR *LPCWSTR;

LPDWORD Pointer to a DWORD.
This type is declared in WinDef.h as follows:


typedef DWORD *LPDWORD;

LPHANDLE Pointer to a HANDLE.
This type is declared in WinDef.h as follows:


typedef HANDLE *LPHANDLE;

LPINT Pointer to an INT.
This type is declared in WinDef.h as follows:


typedef int *LPINT;

LPLONG Pointer to a LONG.
This type is declared in WinDef.h as follows:


typedef long *LPLONG;

LPSTR Pointer to a null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef CHAR *LPSTR;

LPTSTR An LPWSTR if UNICODE is defined, an LPSTR otherwise.
This type is declared in WinNT.h as follows:


#ifdef UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif

LPVOID Pointer to any type.
This type is declared in WinDef.h as follows:


typedef void *LPVOID;

LPWORD Pointer to a WORD.
This type is declared in WinDef.h as follows:


typedef WORD *LPWORD;

LPWSTR Pointer to a null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef WCHAR *LPWSTR;

LRESULT Signed result of message processing.
This type is declared in WinDef.h as follows:


typedef LONG_PTR LRESULT;

PBOOL Pointer to a BOOL.
This type is declared in WinDef.h as follows:


typedef BOOL *PBOOL;

PBOOLEAN Pointer to a BOOL.
This type is declared in WinNT.h as follows:


typedef BOOLEAN *PBOOLEAN;

PBYTE Pointer to a BYTE.
This type is declared in WinDef.h as follows:


typedef BYTE *PBYTE;

PCHAR Pointer to a CHAR.
This type is declared in WinNT.h as follows:


typedef CHAR *PCHAR;

PCSTR Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef CONST CHAR *PCSTR;

PCTSTR A PCWSTR if UNICODE is defined, a PCSTR otherwise.
This type is declared in WinNT.h as follows:


#ifdef UNICODE
typedef LPCWSTR PCTSTR;
#else
typedef LPCSTR PCTSTR;
#endif

PCWSTR Pointer to a constant null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef CONST WCHAR *PCWSTR;

PDWORD Pointer to a DWORD.
This type is declared in WinDef.h as follows:


typedef DWORD *PDWORD;

PDWORDLONG Pointer to a DWORDLONG.
This type is declared in WinNT.h as follows:


typedef DWORDLONG *PDWORDLONG;

PDWORD_PTR Pointer to a DWORD_PTR.
This type is declared in BaseTsd.h as follows:


typedef DWORD_PTR *PDWORD_PTR;

PDWORD32 Pointer to a DWORD32.
This type is declared in BaseTsd.h as follows:


typedef DWORD32 *PDWORD32;

PDWORD64 Pointer to a DWORD64.
This type is declared in BaseTsd.h as follows:


typedef DWORD64 *PDWORD64;

PFLOAT Pointer to a FLOAT.
This type is declared in WinDef.h as follows:


typedef FLOAT *PFLOAT;

PHALF_PTR Pointer to a HALF_PTR.
This type is declared in Basetsd.h as follows:


#ifdef _WIN64
typedef HALF_PTR *PHALF_PTR;
#else
typedef HALF_PTR *PHALF_PTR;
#endif

PHANDLE Pointer to a HANDLE.
This type is declared in WinNT.h as follows:


typedef HANDLE *PHANDLE;

PHKEY Pointer to an HKEY.
This type is declared in WinDef.h as follows:


typedef HKEY *PHKEY;

PINT Pointer to an INT.
This type is declared in WinDef.h as follows:


typedef int *PINT;

PINT_PTR Pointer to an INT_PTR.
This type is declared in BaseTsd.h as follows:


typedef INT_PTR *PINT_PTR;

PINT32 Pointer to an INT32.
This type is declared in BaseTsd.h as follows:


typedef INT32 *PINT32;

PINT64 Pointer to an INT64.
This type is declared in BaseTsd.h as follows:


typedef INT64 *PINT64;

PLCID Pointer to an LCID.
This type is declared in WinNT.h as follows:


typedef PDWORD PLCID;

PLONG Pointer to a LONG.
This type is declared in WinNT.h as follows:


typedef LONG *PLONG;

PLONGLONG Pointer to a LONGLONG.
This type is declared in WinNT.h as follows:


typedef LONGLONG *PLONGLONG;

PLONG_PTR Pointer to a LONG_PTR.
This type is declared in BaseTsd.h as follows:


typedef LONG_PTR *PLONG_PTR;

PLONG32 Pointer to a LONG32.
This type is declared in BaseTsd.h as follows:


typedef LONG32 *PLONG32;

PLONG64 Pointer to a LONG64.
This type is declared in BaseTsd.h as follows:


typedef LONG64 *PLONG64;

POINTER_32 32-bit pointer. On a 32-bit system, this is a native pointer. On a 64-bit system, this is a truncated 64-bit pointer.
This type is declared in BaseTsd.h as follows:


#if defined(_WIN64)
#define POINTER_32 __ptr32
#else
#define POINTER32
#endif

POINTER_64 64-bit pointer. On a 64-bit system, this is a native pointer. On a 32-bit system, this is a sign-extended 32-bit pointer.
Note that it is not safe to assume the state of the high pointer bit.

This type is declared in BaseTsd.h as follows:


#define POINTER_64 __ptr64

PSHORT Pointer to a SHORT.
This type is declared in WinNT.h as follows:


typedef SHORT *PSHORT;

PSIZE_T Pointer to a SIZE_T.
This type is declared in BaseTsd.h as follows:


typedef SIZE_T *PSIZE_T;

PSSIZE_T Pointer to a SSIZE_T.
This type is declared in BaseTsd.h as follows:


typedef SSIZE_T *PSSIZE_T;

PSTR Pointer to a null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef CHAR *PSTR;

PTBYTE Pointer to a TBYTE.
This type is declared in WinNT.h as follows:


typedef TBYTE *PTBYTE;

PTCHAR Pointer to a TCHAR.
This type is declared in WinNT.h as follows:


typedef TCHAR *PTCHAR;

PTSTR A PWSTR if UNICODE is defined, a PSTR otherwise.
This type is declared in WinNT.h as follows:


#ifdef UNICODE
typedef LPWSTR PTSTR;
#else typedef LPSTR PTSTR;
#endif

PUCHAR Pointer to a UCHAR.
This type is declared in WinDef.h as follows:


typedef UCHAR *PUCHAR;

PUHALF_PTR Pointer to a UHALF_PTR.
This type is declared in Basetsd.h as follows:


#ifdef _WIN64
typedef UHALF_PTR *PUHALF_PTR;
#else
typedef UHALF_PTR *PUHALF_PTR;
#endif

PUINT Pointer to a UINT.
This type is declared in WinDef.h as follows:


typedef UINT *PUINT;

PUINT_PTR Pointer to a UINT_PTR.
This type is declared in BaseTsd.h as follows:


typedef UINT_PTR *PUINT_PTR;

PUINT32 Pointer to a UINT32.
This type is declared in BaseTsd.h as follows:


typedef UINT32 *PUINT32;

PUINT64 Pointer to a UINT64.
This type is declared in BaseTsd.h as follows:


typedef UINT64 *PUINT64;

PULONG Pointer to a ULONG.
This type is declared in WinDef.h as follows:


typedef ULONG *PULONG;

PULONGLONG Pointer to a ULONGLONG.
This type is declared in WinDef.h as follows:


typedef ULONGLONG *PULONGLONG;

PULONG_PTR Pointer to a ULONG_PTR.
This type is declared in BaseTsd.h as follows:


typedef ULONG_PTR *PULONG_PTR;

PULONG32 Pointer to a ULONG32.
This type is declared in BaseTsd.h as follows:


typedef ULONG32 *PULONG32;

PULONG64 Pointer to a ULONG64.
This type is declared in BaseTsd.h as follows:


typedef ULONG64 *PULONG64;

PUSHORT Pointer to a USHORT.
This type is declared in WinDef.h as follows:


typedef USHORT *PUSHORT;

PVOID Pointer to any type.
This type is declared in WinNT.h as follows:


typedef void *PVOID;

PWCHAR Pointer to a WCHAR.
This type is declared in WinNT.h as follows:


typedef WCHAR *PWCHAR;

PWORD Pointer to a WORD.
This type is declared in WinDef.h as follows:


typedef WORD *PWORD;

PWSTR Pointer to a null- terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef WCHAR *PWSTR;

SC_HANDLE Handle to a service control manager database. For more information, see SCM Handles.
This type is declared in WinSvc.h as follows:


typedef HANDLE SC_HANDLE;

SC_LOCK Lock to a service control manager database. For more information, see SCM Handles.
This type is declared in WinSvc.h as follows:


typedef LPVOID SC_LOCK;

SERVICE_STATUS_HANDLE Handle to a service status value. For more information, see SCM Handles.
This type is declared in WinSvc.h as follows:


typedef HANDLE SERVICE_STATUS_HANDLE;

SHORT Short integer (16 bits).
This type is declared in WinNT.h as follows:


typedef short SHORT;

SIZE_T The maximum number of bytes to which a pointer can point. Use for a count that must span the full range of a pointer.
This type is declared in BaseTsd.h as follows:


typedef ULONG_PTR SIZE_T;

SSIZE_T Signed SIZE_T.
This type is declared in BaseTsd.h as follows:


typedef LONG_PTR SSIZE_T;

TBYTE A WCHAR if UNICODE is defined, a CHAR otherwise.
This type is declared in WinNT.h as follows:


#ifdef UNICODE
typedef WCHAR TBYTE;
#else
typedef unsigned char TBYTE;
#endif

TCHAR A WCHAR if UNICODE is defined, a CHAR otherwise.
This type is declared in WinNT.h as follows:


#ifdef UNICODE
typedef WCHAR TCHAR;
#else
typedef char TCHAR;
#endif

UCHAR Unsigned CHAR.
This type is declared in WinDef.h as follows:


typedef unsigned char UCHAR;

UHALF_PTR Unsigned HALF_PTR. Use within a structure that contains a pointer and two small fields.
This type is declared in Basetsd.h as follows:


#ifdef _WIN64
typedef unsigned int UHALF_PTR;
#else
typedef unsigned short UHALF_PTR;
#endif

UINT Unsigned INT.
This type is declared in WinDef.h as follows:


typedef unsigned int UINT;

UINT_PTR Unsigned INT_PTR.
This type is declared in BaseTsd.h as follows:


#if defined(_WIN64)
typedef unsigned __int64 UINT_PTR;
#else
typedef unsigned int UINT_PTR;
#endif

UINT32 Unsigned INT32.
This type is declared in BaseTsd.h as follows:


typedef unsigned int UINT32;

UINT64 Unsigned INT64.
This type is declared in BaseTsd.h as follows:


typedef usigned __int 64 UINT64;

ULONG Unsigned LONG.
This type is declared in WinDef.h as follows:


typedef unsigned long ULONG;

ULONGLONG 64-bit unsigned integer.
This type is declared in WinNT.h as follows:


#if !defined(_M_IX86)
typedef unsigned __int64 ULONGLONG;
#else
typedef double ULONGLONG
#endif

ULONG_PTR Unsigned LONG_PTR.
This type is declared in BaseTsd.h as follows:


#if defined(_WIN64)
typedef unsigned __int64 ULONG_PTR;
#else
typedef unsigned long ULONG_PTR;
#endif

ULONG32 Unsigned LONG32.
This type is declared in BaseTsd.h as follows:


typedef unsigned int ULONG32;

ULONG64 Unsigned LONG64.
This type is declared in BaseTsd.h as follows:


typedef unsigned __int64 ULONG64;

USHORT Unsigned SHORT.
This type is declared in WinDef.h as follows:


typedef unsigned short USHORT;

USN Update sequence number (USN).
This type is declared in WinNT.h as follows:


typedef LONGLONG USN;

VOID Any type.
This type is declared in WinNT.h as follows:


#define VOID void

WCHAR 16-bit Unicode character. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:


typedef wchar_t WCHAR;

WINAPI Calling convention for system functions.
This type is declared in WinDef.h as follows:


#define WINAPI __stdcall

WORD 16-bit unsigned integer.
This type is declared in WinDef.h as follows:


typedef unsigned short WORD;

WPARAM Message parameter.
This type is declared in WinDef.h as follows:


typedef UINT_PTR WPARAM;


你可能感兴趣的:(windows,Microsoft,Exchange)