Windows com data types

Windows Data Types for Strings

Most string operations can use the same logic for Unicode and for Windows code pages. The only difference is that the basic unit of operation is a 16-bit character (also known as a wide character) for Unicode and an 8-bit character for Windows code pages. The Windows header files provide several type definitions that make it easy to create sources that can be compiled for Unicode or for Windows code pages.

Windows supports three sets of character and string data types: a set of generic type definitions that can compile for either Unicode or Windows code pages, and two sets of specific type definitions. One set of specific type definitions is for use with Unicode, and the other is for use with Windows code pages.

An application using generic data types can be compiled for Unicode simply by defining «UNICODE» before the #include statements for the header files, or during compilation. New Windows applications should use Unicode to avoid the inconsistencies of varied code pages and to simplify localization. They should be written with generic data types, and should define «UNICODE» in order to compile these types into Unicode types. In the few places where an application must work with 8-bit character data, it can make explicit use of the types for Windows code pages.

The ability to compile the generic types into types for Windows code pages exists mainly to support legacy applications. To compile for Windows code pages, the application just omits the UNICODE definition.

The following example shows the method used in the Windows header files to define the three sets of data types. For the implementation, see the Winnt.h header file.

The letter «T» in a type definition, for example, TCHAR or LPTSTR, designates a generic type that can be compiled for either Windows code pages or Unicode. The letter «W» in a type definition, for example, WCHAR or LPWSTR, designates a Unicode type. Because Windows code pages are of the older form, they have simple type definitions, such as CHAR and LPSTR. For a complete description of data types in Windows, see Windows Data Types.

The New Data Types

There are three classes of new data types: fixed-precision integer types, pointer-precision integer types, and specific-precision pointer types. These types were added to the Windows environment (specifically, to Basetsd.h) to allow developers to prepare for 64-bit Windows well before its introduction. These new types were derived from the basic C-language integer and long types, so they work in existing code. Therefore, use these data types in your code now, test your code on 32-bit Windows, and use the 64-bit compiler to find and fix portability problems in advance, so your driver can be ready when 64-bit Windows is available for testing.

In addition, adopting these new data types will make your code more robust. To use these data types, you must scan your code for potentially unsafe pointer usage, polymorphism, and data definitions. To be safe, use the new types. For example, when a variable is of type ULONG_PTR, it is clear that it will be used for casting pointers for arithmetic operations or polymorphism. It is not possible to indicate such usage directly by using the native Win32 data types. You can do this by using derived type naming or Hungarian notation, but both techniques are prone to errors.

Fixed-Precision Integer Types

Fixed-precision data types are the same length for 32-bit and 64-bit programming. To help you remember this, their precision is part of the name of the data type. The following are the fixed-precision data types.

DWORD32

32-bit unsigned integer

DWORD64

64-bit unsigned integer

INT32

32-bit signed integer

INT64

64-bit signed integer

LONG32

32-bit signed integer

LONG64

64-bit signed integer

UINT32

Unsigned INT32

UINT64

Unsigned INT64

ULONG32

Unsigned LONG32

ULONG64

Unsigned LONG64

Pointer-Precision Integer Types

As the pointer precision changes (that is, as it becomes 32 bits when compiled for 32-bit platforms, 64 bits when compiled for 64-bit platforms), these data types reflect the precision accordingly. Therefore, it is safe to cast a pointer to one of these types when performing pointer arithmetic; if the pointer precision is 64 bits, the type is 64 bits. The count types also reflect the maximum size to which a pointer can refer. The following are the pointer-precision and count types.

Type Definition

DWORD_PTR

Unsigned long type for pointer precision.

HALF_PTR

Signed integral type for half-pointer precision (16 bits on 32-bit systems, 32 bits on 64-bit systems).

INT_PTR

Signed integral type for pointer precision.

LONG_PTR

Signed long type for pointer precision.

SIZE_T

The maximum number of bytes to which a pointer can refer. Use this type for a count that must span the full range of a pointer.

SSIZE_T

Signed SIZE_T.

UHALF_PTR

Unsigned HALF_PTR.

UINT_PTR

Unsigned INT_PTR.

ULONG_PTR

Unsigned LONG_PTR.

Fixed-Precision Pointer Types

There are also new pointer types that explicitly size the pointer. Be cautious when using these pointer types in 64-bit code: If you declare the pointer using a 32-bit type, the system creates the pointer by truncating a 64-bit pointer.

Type Definition

POINTER_32

A 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.

POINTER_64

A 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.

Helper Functions

The following inline functions (defined in Basetsd.h) can help you safely convert values from one type to another:

Warning IntToPtr sign-extends the int value, UIntToPtr zero-extends the unsigned int value, LongToPtr sign-extends the long value, and ULongToPtr zero-extends the unsigned long value.

Windows Runtime base data types

This table lists the base data types that are supported by the Windows Runtime, and indicates the corresponding type in C#, Visual Basic, and C++.

Type Definition
Data type JavaScript C# VB C++
Boolean Boolean bool Boolean bool
Byte Number byte Byte unsigned char
Char String char Char unsigned char
Char16 String char Char wchar_t
DateTime Date DateTimeOffset DateTimeOffset DateTime
Double Number double Double double
Guid String Guid Guid Guid
Int16 Number short Short short
Int32 Number int Integer int
Int64 Number long Long __int64
Object Object object Object Object^
Point Point Point Point Point
Rect Rect Rect Rect Rect
Single Number float Single float
Size Size Size Size Size
String String string String String^
TimeSpan Number TimeSpan TimeSpan TimeSpan
UInt8 Number byte Byte unsigned char
UInt16 Number ushort UShort unsigned short
UInt32 Number uint UInteger unsigned int
UInt64 Number ulong ULong unsigned __int64
Uri Uri Uri Uri Uri^
Void Undefined void Void void

The following table indicates the .NET types that correspond to the Windows Runtime data types.

Windows Data Types

The data types supported by 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.

A handle to an object.

This type is declared in WinNT.h as follows:

typedef PVOID HANDLE;

This type is declared in WinDef.h as follows:

typedef HANDLE HBITMAP;

This type is declared in WinDef.h as follows:

typedef HANDLE HBRUSH;

This type is declared in WinDef.h as follows:

typedef HANDLE HCOLORSPACE;

A handle to a dynamic data exchange (DDE) conversation.

This type is declared in Ddeml.h as follows:

typedef HANDLE HCONV;

A handle to a DDE conversation list.

This type is declared in Ddeml.h as follows:

typedef HANDLE HCONVLIST;

This type is declared in WinDef.h as follows:

typedef HICON HCURSOR;

This type is declared in WinDef.h as follows:

typedef HANDLE HDC;

A handle to DDE data.

This type is declared in Ddeml.h as follows:

typedef HANDLE HDDEDATA;

This type is declared in WinDef.h as follows:

typedef HANDLE HDESK;

A handle to an internal drop structure.

This type is declared in ShellApi.h as follows:

typedef HANDLE HDROP;

A handle to a deferred window position structure.

This type is declared in WinUser.h as follows:

typedef HANDLE HDWP;

This type is declared in WinDef.h as follows:

typedef HANDLE HENHMETAFILE;

This type is declared in WinDef.h as follows:

typedef int HFILE;

This type is declared in WinDef.h as follows:

typedef HANDLE HFONT;

A handle to a GDI object.

This type is declared in WinDef.h as follows:

typedef HANDLE HGDIOBJ;

A handle to a global memory block.

This type is declared in WinDef.h as follows:

typedef HANDLE HGLOBAL;

This type is declared in WinDef.h as follows:

typedef HANDLE HHOOK;

This type is declared in WinDef.h as follows:

typedef HANDLE HICON;

A handle to an instance. This is the base address of the module in memory.

HMODULE and HINSTANCE are the same today, but represented different things in 16-bit Windows.

This type is declared in WinDef.h as follows:

typedef HANDLE HINSTANCE;

A handle to a registry key.

This type is declared in WinDef.h as follows:

typedef HANDLE HKEY;

An input locale identifier.

This type is declared in WinDef.h as follows:

typedef HANDLE HKL;

A handle to a local memory block.

This type is declared in WinDef.h as follows:

typedef HANDLE HLOCAL;

This type is declared in WinDef.h as follows:

typedef HANDLE HMENU;

This type is declared in WinDef.h as follows:

typedef HANDLE HMETAFILE;

A handle to a module. The is the base address of the module in memory.

HMODULE and HINSTANCE are the same in current versions of Windows, but represented different things in 16-bit Windows.

This type is declared in WinDef.h as follows:

typedef HINSTANCE HMODULE;

A handle to a display monitor.

This type is declared in WinDef.h as follows:

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

A handle to a palette.

This type is declared in WinDef.h as follows:

typedef HANDLE HPALETTE;

This type is declared in WinDef.h as follows:

typedef HANDLE HPEN;

The return codes used by COM interfaces. For more information, see Structure of the COM Error Codes. To test an HRESULT value, use the FAILED and SUCCEEDED macros.

This type is declared in WinNT.h as follows:

typedef LONG HRESULT;

This type is declared in WinDef.h as follows:

typedef HANDLE HRGN;

A handle to a resource.

This type is declared in WinDef.h as follows:

typedef HANDLE HRSRC;

A handle to a DDE string.

This type is declared in Ddeml.h as follows:

typedef HANDLE HSZ;

This type is declared in WinDef.h as follows:

typedef HANDLE WINSTA;

This type is declared in WinDef.h as follows:

typedef HANDLE HWND;

A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.

This type is declared in WinDef.h as follows:

typedef int INT;

A 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:

An 8-bit signed integer.

This type is declared in BaseTsd.h as follows:

typedef signed char INT8;

A 16-bit signed integer.

This type is declared in BaseTsd.h as follows:

typedef signed short INT16;

A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.

This type is declared in BaseTsd.h as follows:

typedef signed int INT32;

A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.

This type is declared in BaseTsd.h as follows:

typedef signed __int64 INT64;

A language identifier. For more information, see Language Identifiers.

This type is declared in WinNT.h as follows:

typedef WORD LANGID;

A locale identifier. For more information, see Locale Identifiers.

This type is declared in WinNT.h as follows:

typedef DWORD LCID;

A locale information type. For a list, see Locale Information Constants.

This type is declared in WinNls.h as follows:

typedef DWORD LCTYPE;

This type is declared in WinNls.h as follows:

typedef DWORD LGRPID;

A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.

This type is declared in WinNT.h as follows:

typedef long LONG;

A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.

This type is declared in WinNT.h as follows:

A 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:

A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.

This type is declared in BaseTsd.h as follows:

typedef signed int LONG32;

A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.

This type is declared in BaseTsd.h as follows:

typedef __int64 LONG64;

A message parameter.

This type is declared in WinDef.h as follows:

typedef LONG_PTR LPARAM;

This type is declared in WinDef.h as follows:

typedef BOOL far *LPBOOL;

This type is declared in WinDef.h as follows:

typedef BYTE far *LPBYTE;

This type is declared in WinDef.h as follows:

typedef DWORD *LPCOLORREF;

A 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;

An LPCWSTR if UNICODE is defined, an LPCSTR otherwise. For more information, see Windows Data Types for Strings.

This type is declared in WinNT.h as follows:

A pointer to a constant of any type.

This type is declared in WinDef.h as follows:

typedef CONST void *LPCVOID;

A 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;

This type is declared in WinDef.h as follows:

typedef DWORD *LPDWORD;

This type is declared in WinDef.h as follows:

typedef HANDLE *LPHANDLE;

This type is declared in WinDef.h as follows:

typedef int *LPINT;

This type is declared in WinDef.h as follows:

typedef long *LPLONG;

A 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;

An LPWSTR if UNICODE is defined, an LPSTR otherwise. For more information, see Windows Data Types for Strings.

This type is declared in WinNT.h as follows:

A pointer to any type.

This type is declared in WinDef.h as follows:

typedef void *LPVOID;

This type is declared in WinDef.h as follows:

typedef WORD *LPWORD;

A 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;

Signed result of message processing.

This type is declared in WinDef.h as follows:

typedef LONG_PTR LRESULT;

This type is declared in WinDef.h as follows:

typedef BOOL *PBOOL;

This type is declared in WinNT.h as follows:

typedef BOOLEAN *PBOOLEAN;

This type is declared in WinDef.h as follows:

typedef BYTE *PBYTE;

This type is declared in WinNT.h as follows:

typedef CHAR *PCHAR;

A 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;

A PCWSTR if UNICODE is defined, a PCSTR otherwise. For more information, see Windows Data Types for Strings.

This type is declared in WinNT.h as follows:

A 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;

This type is declared in WinDef.h as follows:

typedef DWORD *PDWORD;

This type is declared in WinNT.h as follows:

typedef DWORDLONG *PDWORDLONG;

This type is declared in BaseTsd.h as follows:

typedef DWORD_PTR *PDWORD_PTR;

This type is declared in BaseTsd.h as follows:

typedef DWORD32 *PDWORD32;

This type is declared in BaseTsd.h as follows:

typedef DWORD64 *PDWORD64;

This type is declared in WinDef.h as follows:

typedef FLOAT *PFLOAT;

This type is declared in BaseTsd.h as follows:

This type is declared in WinNT.h as follows:

typedef HANDLE *PHANDLE;

This type is declared in WinDef.h as follows:

typedef HKEY *PHKEY;

This type is declared in WinDef.h as follows:

typedef int *PINT;

This type is declared in BaseTsd.h as follows:

typedef INT_PTR *PINT_PTR;

This type is declared in BaseTsd.h as follows:

typedef INT8 *PINT8;

This type is declared in BaseTsd.h as follows:

typedef INT16 *PINT16;

This type is declared in BaseTsd.h as follows:

typedef INT32 *PINT32;

This type is declared in BaseTsd.h as follows:

typedef INT64 *PINT64;

This type is declared in WinNT.h as follows:

typedef PDWORD PLCID;

This type is declared in WinNT.h as follows:

typedef LONG *PLONG;

This type is declared in WinNT.h as follows:

typedef LONGLONG *PLONGLONG;

This type is declared in BaseTsd.h as follows:

typedef LONG_PTR *PLONG_PTR;

This type is declared in BaseTsd.h as follows:

typedef LONG32 *PLONG32;

This type is declared in BaseTsd.h as follows:

typedef LONG64 *PLONG64;

A 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:

A 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:

A signed pointer.

This type is declared in BaseTsd.h as follows:

#define POINTER_SIGNED __sptr

An unsigned pointer.

This type is declared in BaseTsd.h as follows:

#define POINTER_UNSIGNED __uptr

This type is declared in WinNT.h as follows:

typedef SHORT *PSHORT;

This type is declared in BaseTsd.h as follows:

typedef SIZE_T *PSIZE_T;

This type is declared in BaseTsd.h as follows:

typedef SSIZE_T *PSSIZE_T;

A 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;

This type is declared in WinNT.h as follows:

typedef TBYTE *PTBYTE;

This type is declared in WinNT.h as follows:

typedef TCHAR *PTCHAR;

A PWSTR if UNICODE is defined, a PSTR otherwise. For more information, see Windows Data Types for Strings.

This type is declared in WinNT.h as follows:

This type is declared in WinDef.h as follows:

typedef UCHAR *PUCHAR;

This type is declared in BaseTsd.h as follows:

This type is declared in WinDef.h as follows:

typedef UINT *PUINT;

This type is declared in BaseTsd.h as follows:

typedef UINT_PTR *PUINT_PTR;

This type is declared in BaseTsd.h as follows:

typedef UINT8 *PUINT8;

This type is declared in BaseTsd.h as follows:

typedef UINT16 *PUINT16;

This type is declared in BaseTsd.h as follows:

typedef UINT32 *PUINT32;

This type is declared in BaseTsd.h as follows:

typedef UINT64 *PUINT64;

This type is declared in WinDef.h as follows:

typedef ULONG *PULONG;

This type is declared in WinDef.h as follows:

typedef ULONGLONG *PULONGLONG;

This type is declared in BaseTsd.h as follows:

typedef ULONG_PTR *PULONG_PTR;

This type is declared in BaseTsd.h as follows:

typedef ULONG32 *PULONG32;

This type is declared in BaseTsd.h as follows:

typedef ULONG64 *PULONG64;

This type is declared in WinDef.h as follows:

typedef USHORT *PUSHORT;

A pointer to any type.

This type is declared in WinNT.h as follows:

typedef void *PVOID;

This type is declared in WinNT.h as follows:

typedef WCHAR *PWCHAR;

This type is declared in WinDef.h as follows:

typedef WORD *PWORD;

A 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;

A 64-bit unsigned integer.

This type is declared as follows:

typedef unsigned __int64 QWORD;

A 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;

A 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;

A 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;

A 16-bit integer. The range is -32768 through 32767 decimal.

This type is declared in WinNT.h as follows:

typedef short SHORT;

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;

This type is declared in BaseTsd.h as follows:

typedef LONG_PTR SSIZE_T;

A WCHAR if UNICODE is defined, a CHAR otherwise.

This type is declared in WinNT.h as follows:

A WCHAR if UNICODE is defined, a CHAR otherwise.

This type is declared in WinNT.h as follows:

This type is declared in WinDef.h as follows:

typedef unsigned char UCHAR;

An unsigned HALF_PTR. Use within a structure that contains a pointer and two small fields.

This type is declared in BaseTsd.h as follows:

An unsigned INT. The range is 0 through 4294967295 decimal.

This type is declared in WinDef.h as follows:

typedef unsigned int UINT;

This type is declared in BaseTsd.h as follows:

This type is declared in BaseTsd.h as follows:

typedef unsigned char UINT8;

This type is declared in BaseTsd.h as follows:

typedef unsigned short UINT16;

An unsigned INT32. The range is 0 through 4294967295 decimal.

This type is declared in BaseTsd.h as follows:

typedef unsigned int UINT32;

An unsigned INT64. The range is 0 through 18446744073709551615 decimal.

This type is declared in BaseTsd.h as follows:

typedef usigned __int 64 UINT64;

An unsigned LONG. The range is 0 through 4294967295 decimal.

This type is declared in WinDef.h as follows:

typedef unsigned long ULONG;

A 64-bit unsigned integer. The range is 0 through 18446744073709551615 decimal.

This type is declared in WinNT.h as follows:

This type is declared in BaseTsd.h as follows:

An unsigned LONG32. The range is 0 through 4294967295 decimal.

This type is declared in BaseTsd.h as follows:

typedef unsigned int ULONG32;

An unsigned LONG64. The range is 0 through 18446744073709551615 decimal.

This type is declared in BaseTsd.h as follows:

typedef unsigned __int64 ULONG64;

A Unicode string.

This type is declared in Winternl.h as follows:

An unsigned SHORT. The range is 0 through 65535 decimal.

This type is declared in WinDef.h as follows:

typedef unsigned short USHORT;

An update sequence number (USN).

This type is declared in WinNT.h as follows:

typedef LONGLONG USN;

This type is declared in WinNT.h as follows:

#define VOID void

A 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;

The calling convention for system functions.

This type is declared in WinDef.h as follows:

#define WINAPI __stdcall

CALLBACK, WINAPI, and APIENTRY are all used to define functions with the __stdcall calling convention. Most functions in the Windows API are declared using WINAPI. You may wish to use CALLBACK for the callback functions that you implement to help identify the function as a callback function.

A 16-bit unsigned integer. The range is 0 through 65535 decimal.

This type is declared in WinDef.h as follows:

typedef unsigned short WORD;

A message parameter.

This type is declared in WinDef.h as follows:

Читайте также:  Amd latest driver windows 10
Оцените статью
Data type Description
APIENTRY The calling convention for system functions.
This type is declared in WinDef.h as follows:
#define APIENTRY WINAPI
ATOM An atom. For more information, see About Atom Tables.
This type is declared in WinDef.h as follows:
typedef WORD ATOM;
BOOL A Boolean variable (should be TRUE or FALSE).
This type is declared in WinDef.h as follows:
typedef int BOOL;
BOOLEAN A Boolean variable (should be TRUE or FALSE).
This type is declared in WinNT.h as follows:
typedef BYTE BOOLEAN;
BYTE A byte (8 bits).
This type is declared in WinDef.h as follows:
typedef unsigned char BYTE;
CALLBACK The calling convention for callback functions.
This type is declared in WinDef.h as follows:
#define CALLBACK __stdcall
CALLBACK, WINAPI, and APIENTRY are all used to define functions with the __stdcall calling convention. Most functions in the Windows API are declared using WINAPI. You may wish to use CALLBACK for the callback functions that you implement to help identify the function as a callback function.
CCHAR An 8-bit Windows (ANSI) character.
This type is declared in WinNT.h as follows:
typedef char CCHAR;
CHAR An 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 The 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 A variable whose value is to remain constant during execution.
This type is declared in WinDef.h as follows:
#define CONST const
DWORD A 32-bit unsigned integer. The range is 0 through 4294967295 decimal.
This type is declared in IntSafe.h as follows:
typedef unsigned long DWORD;
DWORDLONG A 64-bit unsigned integer. The range is 0 through 18446744073709551615 decimal.
This type is declared in IntSafe.h as follows:
typedef unsigned __int64 DWORDLONG;
DWORD_PTR An 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 A 32-bit unsigned integer.
This type is declared in BaseTsd.h as follows:
typedef unsigned int DWORD32;
DWORD64 A 64-bit unsigned integer.
This type is declared in BaseTsd.h as follows:
typedef unsigned __int64 DWORD64;
FLOAT A floating-point variable.
This type is declared in WinDef.h as follows:
typedef float FLOAT;
HACCEL A 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:
C++
HANDLE
POINTER_UNSIGNED
SERVICE_STATUS_HANDLE