Windows Data Types
2010-04-03 14:22
645 查看
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.
Build date: 3/26/2010
Community ContentAdd
LONGLONG - defined via double? Edit
LONGLONG
64-bit signed integer. The range is –9223372036854775808 through 9223372036854775807 decimal.
This type is declared in WinNT.h as follows:
Is it in above is typing error?
The datatype "double" is defined:
Type double is a floating type that is larger than or equal to type float, but shorter than or equal to the size of type longdouble.1 http://msdn.microsoft.com/en-us/library/cc953fe1.aspx
History
3/16/2010
u_margus
3/16/2010
u_margus
HWND can't be read Edit
Note that
though HWND is a "pointer to void *"
or (in the VBasic example) an IntPtr (pointer to an int)
you can't actually read the value it points to, or write to that location. It's just a pointer into some deep dark windows data structure, and the fact that it points into that exact location is all it gives you. You'll get a memory read exception if you try to read from that location.
History
3/1/2010
rogerdpack
Visual Basic 9 Equivalents for PInvoke Edit
MSDN Type Visual Basic 9 Type
ATOM UShort
BOOL Integer
BOOLEAN Byte
BYTE Byte
CALLBACK Delegate
CHAR SByte
COLORREF UInteger
CONST Const
DWORD UInteger
DWORDLONG ULong
DWORD_PTR UInteger (ULong)
DWORD32 UInteger
DWORD64 Long
FLOAT Single
HACCEL IntPtr
HALF_PTR Short (Integer)
HANDLE IntPtr
HBITMAP IntPtr
HBRUSH IntPtr
HCONV IntPtr
HCONVLIST IntPtr
HCURSOR IntPtr
HDC IntPtr
HDDEDATA IntPtr
HDESK IntPtr
HDROP IntPtr
HDWP IntPtr
HENHMETAFILE IntPtr
HFILE Integer
HFONT IntPtr
HGIDOBJ IntPtr
HGLOBAL IntPtr
HHOOK IntPtr
HICON IntPtr
HINSTANCE IntPtr
HKEY IntPtr
HKL IntPtr
HLOCAL IntPtr
HMENU IntPtr
HMETAFILE IntPtr
HMODULE IntPtr
HMONITOR IntPtr
HPALETTE IntPtr
HPEN IntPtr
HRESULT Integer
HRGN IntPtr
HRSRC IntPtr
HSZ IntPtr
HWINSTA IntPtr
HWND IntPtr
INT_PTR Integer (Long)
INT32 Integer
INT64 Long
LANGID UShort
LCID UInteger
LGRPID UInteger
LONG Integer
LONGLONG Long
LONG_PTR Integer (Long)
LONG32 Integer
LONG64 Long
LPARAM Integer (Long)
LPBOOL ByRef Integer
LPBYTE ByRef Byte
LPCOLORREF UInteger
LPCSTR ByRef SByte
LPCTSTR ByRef Char
LPCWSTR ByRef Char
LPDWORD UInteger
LPHANDLE ByRef IntPtr
LPINT Integer (Long)
LPLONG Integer
LPSTR ByRef SByte
LPTSTR ByRef Char
LPVOID IntPtr
LPWORD UShort
LPWSTR ByRef Char
LRESULT Integer (Long)
PBOOL Integer (Long)
PBOOLEAN ByRef Byte
PBYTE ByRef Byte
PCHAR ByRef SByte
PCSTR ByRef SByte
PCTSTR ByRef Char
PCWSTR ByRef Char
PDWORD UInteger
PDWORDLONG ByRef ULong
PDWORD_PTR ByRef UInteger (ULong)
PDWORD32 ByRef UInteger
PDWORD64 ByRef Long
PFLOAT ByRef Single
PHALF_PTR ByRef Short (Integer)
PHANDLE ByRef IntPtr
PHKEY ByRef IntPtr
PINT Integer (Long)
PINT_PTR ByRef Integer (Long)
PINT32 ByRef Integer
PINT64 ByRef Long
PLCID UInteger
PLONG Integer
PLONGLONG ByRef Long
PLONG_PTR ByRef Integer (Long)
PLONG32 ByRef Integer
PLONG64 ByRef Long
POINTER_32 (IntPtr)
POINTER_64 IntPtr
POINTER_SIGNED IntPtr
POINTER_UNSIGNED UIntPtr
PSHORT Short
PSIZE_T ByRef UInteger (ULong)
PSSIZE_T ByRef Integer (Long)
PSTR ByRef SByte
PTBYTE ByRef Char
PTCHAR ByRef Char
PTSTR ByRef Char
PUCHAR ByRef Byte
PUHALF_PTR ByRef UShort (UInteger)
PUINT ByRef UInteger
PUINT_PTR ByRef UInteger (ULong)
PUINT32 ByRef UInteger
PUINT64 ByRef ULong
PULONG UInteger
PULONGLONG ByRef ULong
PULONG_PTR ByRef UInteger (ULong)
PULONG32 ByRef UInteger
PULONG64 ByRef ULong
PUSHORT UShort
PVOID IntPtr
PWCHAR ByRef Char
PWORD UShort
PWSTR ByRef Char
SC_HANDLE IntPtr
SC_LOCK IntPtr
SERVICE_STATUS_HANDLE IntPtr
SHORT Short
SIZE_T UInteger (ULong)
SSIZE_T Integer (Long)
TBYTE Char
TCHAR Char
UCHAR Byte
UHALF_PTR UShort (UInteger)
UINT UInteger
UINT_PTR UInteger (ULong)
UINT32 UInteger
UINT64 ULong
ULONG UInteger
ULONGLONG ULong
ULONG_PTR UInteger (ULong)
ULONG32 UInteger
ULONG64 ULong
UNICODE_STRING Structure UNICODE_STRING : Dim Lenght As UShort, MaximumLenght As UShort, ByRef Buffer As Char : End Structure
USHORT UShort
USN Long
VOID Object
WCHAR Char
WIANPI Delegate
WORD UShort
WPARAM UInteger (ULong)
2 types means 32bit plaform (64bit platform)
Assumes #Unicode directive
Assumest highest Windows version possible
See full table http://spreadsheets.google.com/ccc?key=pK5CEcdG9GYGeO7K2dmEcBg
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.
Type | Description |
---|---|
APIENTRY | Calling convention for system functions. This type is declared in WinDef.h as follows: Copy #define APIENTRY WINAPI |
ATOM | Atom. For more information, see Atoms. This type is declared in WinDef.h as follows: Copy typedef WORD ATOM; |
BOOL | Boolean variable (should be TRUE or FALSE). This type is declared in WinDef.h as follows: Copy typedef int BOOL; |
BOOLEAN | Boolean variable (should be TRUE or FALSE). This type is declared in WinNT.h as follows: Copy typedef BYTE BOOLEAN; |
BYTE | Byte (8 bits). This type is declared in WinDef.h as follows: Copy typedef unsigned char BYTE; |
CALLBACK | Calling convention for callback functions. This type is declared in WinDef.h as follows: Copy #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. |
CHAR | 8-bit Windows (ANSI) character. For more information, see Character Sets Used By Fonts. This type is declared in WinNT.h as follows: Copy 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: Copy typedef DWORD COLORREF; |
CONST | Variable whose value is to remain constant during execution. This type is declared in WinDef.h as follows: Copy #define CONST const |
DWORD | 32-bit unsigned integer. The range is 0 through 4294967295 decimal. This type is declared in WinDef.h as follows: Copy typedef unsigned long DWORD; |
DWORDLONG | 64-bit unsigned integer. The range is 0 through 18446744073709551615 decimal. This type is declared in WinNT.h as follows: Copy 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: Copy typedef ULONG_PTR DWORD_PTR; |
DWORD32 | 32-bit unsigned integer. This type is declared in BaseTsd.h as follows: Copy typedef unsigned int DWORD32; |
DWORD64 | 64-bit unsigned integer. This type is declared in BaseTsd.h as follows: Copy typedef unsigned __int64 DWORD64; |
FLOAT | Floating-point variable. This type is declared in WinDef.h as follows: Copy typedef float FLOAT; |
HACCEL | Handle to an accelerator table. This type is declared in WinDef.h as follows: Copy 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: Copy #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: Copy typedef PVOID HANDLE; |
HBITMAP | Handle to a bitmap. This type is declared in WinDef.h as follows: Copy typedef HANDLE HBITMAP; |
HBRUSH | Handle to a brush. This type is declared in WinDef.h as follows: Copy typedef HANDLE HBRUSH; |
HCOLORSPACE | Handle to a color space. This type is declared in WinDef.h as follows: Copy #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: Copy typedef HANDLE HCONV; |
HCONVLIST | Handle to a DDE conversation list. This type is declared in Ddeml.h as follows: Copy typedef HANDLE HCONVLIST; |
HCURSOR | Handle to a cursor. This type is declared in WinDef.h as follows: Copy typedef HICON HCURSOR; |
HDC | Handle to a device context (DC). This type is declared in WinDef.h as follows: Copy typedef HANDLE HDC; |
HDDEDATA | Handle to DDE data. This type is declared in Ddeml.h as follows: Copy typedef HANDLE HDDEDATA; |
HDESK | Handle to a desktop. This type is declared in WinDef.h as follows: Copy typedef HANDLE HDESK; |
HDROP | Handle to an internal drop structure. This type is declared in ShellApi.h as follows: Copy typedef HANDLE HDROP; |
HDWP | Handle to a deferred window position structure. This type is declared in WinUser.h as follows: Copy typedef HANDLE HDWP; |
HENHMETAFILE | Handle to an enhanced metafile. This type is declared in WinDef.h as follows: Copy typedef HANDLE HENHMETAFILE; |
HFILE | Handle to a file opened by OpenFile, not CreateFile. This type is declared in WinDef.h as follows: Copy typedef int HFILE; |
HFONT | Handle to a font. This type is declared in WinDef.h as follows: Copy typedef HANDLE HFONT; |
HGDIOBJ | Handle to a GDI object. This type is declared in WinDef.h as follows: Copy typedef HANDLE HGDIOBJ; |
HGLOBAL | Handle to a global memory block. This type is declared in WinDef.h as follows: Copy typedef HANDLE HGLOBAL; |
HHOOK | Handle to a hook. This type is declared in WinDef.h as follows: Copy typedef HANDLE HHOOK; |
HICON | Handle to an icon. This type is declared in WinDef.h as follows: Copy typedef HANDLE HICON; |
HINSTANCE | 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: Copy typedef HANDLE HINSTANCE; |
HKEY | Handle to a registry key. This type is declared in WinDef.h as follows: Copy typedef HANDLE HKEY; |
HKL | Input locale identifier. This type is declared in WinDef.h as follows: Copy typedef HANDLE HKL; |
HLOCAL | Handle to a local memory block. This type is declared in WinDef.h as follows: Copy typedef HANDLE HLOCAL; |
HMENU | Handle to a menu. This type is declared in WinDef.h as follows: Copy typedef HANDLE HMENU; |
HMETAFILE | Handle to a metafile. This type is declared in WinDef.h as follows: Copy typedef HANDLE HMETAFILE; |
HMODULE | Handle to a module. The 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: Copy typedef HINSTANCE HMODULE; |
HMONITOR | Handle to a display monitor. This type is declared in WinDef.h as follows: Copy if(WINVER >= 0x0500) typedef HANDLE HMONITOR; |
HPALETTE | Handle to a palette. This type is declared in WinDef.h as follows: Copy typedef HANDLE HPALETTE; |
HPEN | Handle to a pen. This type is declared in WinDef.h as follows: Copy typedef HANDLE HPEN; |
HRESULT | Return code 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: Copy typedef LONG HRESULT; |
HRGN | Handle to a region. This type is declared in WinDef.h as follows: Copy typedef HANDLE HRGN; |
HRSRC | Handle to a resource. This type is declared in WinDef.h as follows: Copy typedef HANDLE HRSRC; |
HSZ | Handle to a DDE string. This type is declared in Ddeml.h as follows: Copy typedef HANDLE HSZ; |
HWINSTA | Handle to a window station. This type is declared in WinDef.h as follows: Copy typedef HANDLE WINSTA; |
HWND | Handle to a window. This type is declared in WinDef.h as follows: Copy typedef HANDLE HWND; |
INT | 32-bit signed integer. The range is -2147483648 through 2147483647 decimal. This type is declared in WinDef.h as follows: Copy 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: Copy #if defined(_WIN64) typedef __int64 INT_PTR; #else typedef int INT_PTR; #endif |
INT32 | 32-bit signed integer. The range is -2147483648 through 2147483647 decimal. This type is declared in BaseTsd.h as follows: Copy typedef signed int INT32; |
INT64 | 64-bit signed integer. The range is –9223372036854775808 through 9223372036854775807 decimal. This type is declared in BaseTsd.h as follows: Copy typedef signed __int64 INT64; |
LANGID | Language identifier. For more information, see Locales. This type is declared in WinNT.h as follows: Copy typedef WORD LANGID; |
LCID | Locale identifier. For more information, see Locales. This type is declared in WinNT.h as follows: Copy typedef DWORD LCID; |
LCTYPE | Locale information type. For a list, see Locale Information Constants. This type is declared in WinNls.h as follows: Copy typedef DWORD LCTYPE; |
LGRPID | Language group identifier. For a list, see EnumLanguageGroupLocales. This type is declared in WinNls.h as follows: Copy typedef DWORD LGRPID; |
LONG | 32-bit signed integer. The range is –2147483648 through 2147483647 decimal. This type is declared in WinNT.h as follows: Copy typedef long LONG; |
LONGLONG | 64-bit signed integer. The range is –9223372036854775808 through 9223372036854775807 decimal. This type is declared in WinNT.h as follows: Copy #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: Copy #if defined(_WIN64) typedef __int64 LONG_PTR; #else typedef long LONG_PTR; #endif |
LONG32 | 32-bit signed integer. The range is –2147483648 through 2147483647 decimal. This type is declared in BaseTsd.h as follows: Copy typedef signed int LONG32; |
LONG64 | 64-bit signed integer. The range is –9223372036854775808 through 9223372036854775807 decimal. This type is declared in BaseTsd.h as follows: Copy typedef __int64 LONG64; |
LPARAM | Message parameter. This type is declared in WinDef.h as follows: Copy typedef LONG_PTR LPARAM; |
LPBOOL | Pointer to a BOOL. This type is declared in WinDef.h as follows: Copy typedef BOOL far *LPBOOL; |
LPBYTE | Pointer to a BYTE. This type is declared in WinDef.h as follows: Copy typedef BYTE far *LPBYTE; |
LPCOLORREF | Pointer to a COLORREF value. This type is declared in WinDef.h as follows: Copy 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: Copy typedef __nullterminated CONST CHAR *LPCSTR; |
LPCTSTR | An LPCWSTR if UNICODE is defined, an LPCSTR otherwise. This type is declared in WinNT.h as follows: Copy #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: Copy 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: Copy typedef CONST WCHAR *LPCWSTR; |
LPDWORD | Pointer to a DWORD. This type is declared in WinDef.h as follows: Copy typedef DWORD *LPDWORD; |
LPHANDLE | Pointer to a HANDLE. This type is declared in WinDef.h as follows: Copy typedef HANDLE *LPHANDLE; |
LPINT | Pointer to an INT. This type is declared in WinDef.h as follows: Copy typedef int *LPINT; |
LPLONG | Pointer to a LONG. This type is declared in WinDef.h as follows: Copy 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: Copy typedef CHAR *LPSTR; |
LPTSTR | An LPWSTR if UNICODE is defined, an LPSTR otherwise. This type is declared in WinNT.h as follows: Copy #ifdef UNICODE typedef LPWSTR LPTSTR; #else typedef LPSTR LPTSTR; #endif |
LPVOID | Pointer to any type. This type is declared in WinDef.h as follows: Copy typedef void *LPVOID; |
LPWORD | Pointer to a WORD. This type is declared in WinDef.h as follows: Copy 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: Copy typedef WCHAR *LPWSTR; |
LRESULT | Signed result of message processing. This type is declared in WinDef.h as follows: Copy typedef LONG_PTR LRESULT; |
PBOOL | Pointer to a BOOL. This type is declared in WinDef.h as follows: Copy typedef BOOL *PBOOL; |
PBOOLEAN | Pointer to a BOOL. This type is declared in WinNT.h as follows: Copy typedef BOOLEAN *PBOOLEAN; |
PBYTE | Pointer to a BYTE. This type is declared in WinDef.h as follows: Copy typedef BYTE *PBYTE; |
PCHAR | Pointer to a CHAR. This type is declared in WinNT.h as follows: Copy 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: Copy typedef CONST CHAR *PCSTR; |
PCTSTR | A PCWSTR if UNICODE is defined, a PCSTR otherwise. This type is declared in WinNT.h as follows: Copy #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: Copy typedef CONST WCHAR *PCWSTR; |
PDWORD | Pointer to a DWORD. This type is declared in WinDef.h as follows: Copy typedef DWORD *PDWORD; |
PDWORDLONG | Pointer to a DWORDLONG. This type is declared in WinNT.h as follows: Copy typedef DWORDLONG *PDWORDLONG; |
PDWORD_PTR | Pointer to a DWORD_PTR. This type is declared in BaseTsd.h as follows: Copy typedef DWORD_PTR *PDWORD_PTR; |
PDWORD32 | Pointer to a DWORD32. This type is declared in BaseTsd.h as follows: Copy typedef DWORD32 *PDWORD32; |
PDWORD64 | Pointer to a DWORD64. This type is declared in BaseTsd.h as follows: Copy typedef DWORD64 *PDWORD64; |
PFLOAT | Pointer to a FLOAT. This type is declared in WinDef.h as follows: Copy typedef FLOAT *PFLOAT; |
PHALF_PTR | Pointer to a HALF_PTR. This type is declared in Basetsd.h as follows: Copy #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: Copy typedef HANDLE *PHANDLE; |
PHKEY | Pointer to an HKEY. This type is declared in WinDef.h as follows: Copy typedef HKEY *PHKEY; |
PINT | Pointer to an INT. This type is declared in WinDef.h as follows: Copy typedef int *PINT; |
PINT_PTR | Pointer to an INT_PTR. This type is declared in BaseTsd.h as follows: Copy typedef INT_PTR *PINT_PTR; |
PINT32 | Pointer to an INT32. This type is declared in BaseTsd.h as follows: Copy typedef INT32 *PINT32; |
PINT64 | Pointer to an INT64. This type is declared in BaseTsd.h as follows: Copy typedef INT64 *PINT64; |
PLCID | Pointer to an LCID. This type is declared in WinNT.h as follows: Copy typedef PDWORD PLCID; |
PLONG | Pointer to a LONG. This type is declared in WinNT.h as follows: Copy typedef LONG *PLONG; |
PLONGLONG | Pointer to a LONGLONG. This type is declared in WinNT.h as follows: Copy typedef LONGLONG *PLONGLONG; |
PLONG_PTR | Pointer to a LONG_PTR. This type is declared in BaseTsd.h as follows: Copy typedef LONG_PTR *PLONG_PTR; |
PLONG32 | Pointer to a LONG32. This type is declared in BaseTsd.h as follows: Copy typedef LONG32 *PLONG32; |
PLONG64 | Pointer to a LONG64. This type is declared in BaseTsd.h as follows: Copy 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: Copy #if defined(_WIN64) #define POINTER_32 __ptr32 #else #define POINTER_32 #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: Copy #if (_MSC_VER >= 1300) #define POINTER_64 __ptr64 #else #define POINTER_64 #endif |
POINTER_SIGNED | A signed pointer. This type is declared in BaseTsd.h as follows: Copy #define POINTER_SIGNED __sptr |
POINTER_UNSIGNED | An unsigned pointer. This type is declared in BaseTsd.h as follows: Copy #define POINTER_UNSIGNED __uptr |
PSHORT | Pointer to a SHORT. This type is declared in WinNT.h as follows: Copy typedef SHORT *PSHORT; |
PSIZE_T | Pointer to a SIZE_T. This type is declared in BaseTsd.h as follows: Copy typedef SIZE_T *PSIZE_T; |
PSSIZE_T | Pointer to a SSIZE_T. This type is declared in BaseTsd.h as follows: Copy 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: Copy typedef CHAR *PSTR; |
PTBYTE | Pointer to a TBYTE. This type is declared in WinNT.h as follows: Copy typedef TBYTE *PTBYTE; |
PTCHAR | Pointer to a TCHAR. This type is declared in WinNT.h as follows: Copy typedef TCHAR *PTCHAR; |
PTSTR | A PWSTR if UNICODE is defined, a PSTR otherwise. This type is declared in WinNT.h as follows: Copy #ifdef UNICODE typedef LPWSTR PTSTR; #else typedef LPSTR PTSTR; #endif |
PUCHAR | Pointer to a UCHAR. This type is declared in WinDef.h as follows: Copy typedef UCHAR *PUCHAR; |
PUHALF_PTR | Pointer to a UHALF_PTR. This type is declared in Basetsd.h as follows: Copy #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: Copy typedef UINT *PUINT; |
PUINT_PTR | Pointer to a UINT_PTR. This type is declared in BaseTsd.h as follows: Copy typedef UINT_PTR *PUINT_PTR; |
PUINT32 | Pointer to a UINT32. This type is declared in BaseTsd.h as follows: Copy typedef UINT32 *PUINT32; |
PUINT64 | Pointer to a UINT64. This type is declared in BaseTsd.h as follows: Copy typedef UINT64 *PUINT64; |
PULONG | Pointer to a ULONG. This type is declared in WinDef.h as follows: Copy typedef ULONG *PULONG; |
PULONGLONG | Pointer to a ULONGLONG. This type is declared in WinDef.h as follows: Copy typedef ULONGLONG *PULONGLONG; |
PULONG_PTR | Pointer to a ULONG_PTR. This type is declared in BaseTsd.h as follows: Copy typedef ULONG_PTR *PULONG_PTR; |
PULONG32 | Pointer to a ULONG32. This type is declared in BaseTsd.h as follows: Copy typedef ULONG32 *PULONG32; |
PULONG64 | Pointer to a ULONG64. This type is declared in BaseTsd.h as follows: Copy typedef ULONG64 *PULONG64; |
PUSHORT | Pointer to a USHORT. This type is declared in WinDef.h as follows: Copy typedef USHORT *PUSHORT; |
PVOID | Pointer to any type. This type is declared in WinNT.h as follows: Copy typedef void *PVOID; |
PWCHAR | Pointer to a WCHAR. This type is declared in WinNT.h as follows: Copy typedef WCHAR *PWCHAR; |
PWORD | Pointer to a WORD. This type is declared in WinDef.h as follows: Copy 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: Copy 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: Copy 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: Copy 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: Copy typedef HANDLE SERVICE_STATUS_HANDLE; |
SHORT | A 16-bit integer. The range is –32768 through 32767 decimal. This type is declared in WinNT.h as follows: Copy 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: Copy typedef ULONG_PTR SIZE_T; |
SSIZE_T | Signed SIZE_T. This type is declared in BaseTsd.h as follows: Copy typedef LONG_PTR SSIZE_T; |
TBYTE | A WCHAR if UNICODE is defined, a CHAR otherwise. This type is declared in WinNT.h as follows: Copy #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: Copy #ifdef UNICODE typedef WCHAR TCHAR; #else typedef char TCHAR; #endif |
UCHAR | Unsigned CHAR. This type is declared in WinDef.h as follows: Copy 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: Copy #ifdef _WIN64 typedef unsigned int UHALF_PTR; #else typedef unsigned short UHALF_PTR; #endif |
UINT | Unsigned INT. The range is 0 through 4294967295 decimal. This type is declared in WinDef.h as follows: Copy typedef unsigned int UINT; |
UINT_PTR | Unsigned INT_PTR. This type is declared in BaseTsd.h as follows: Copy #if defined(_WIN64) typedef unsigned __int64 UINT_PTR; #else typedef unsigned int UINT_PTR; #endif |
UINT32 | Unsigned INT32. The range is 0 through 4294967295 decimal. This type is declared in BaseTsd.h as follows: Copy typedef unsigned int UINT32; |
UINT64 | Unsigned INT64. The range is 0 through 18446744073709551615 decimal. This type is declared in BaseTsd.h as follows: Copy typedef usigned __int 64 UINT64; |
ULONG | Unsigned LONG. The range is 0 through 4294967295 decimal. This type is declared in WinDef.h as follows: Copy typedef unsigned long ULONG; |
ULONGLONG | 64-bit unsigned integer. The range is 0 through 18446744073709551615 decimal. This type is declared in WinNT.h as follows: Copy #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: Copy #if defined(_WIN64) typedef unsigned __int64 ULONG_PTR; #else typedef unsigned long ULONG_PTR; #endif |
ULONG32 | Unsigned LONG32. The range is 0 through 4294967295 decimal. This type is declared in BaseTsd.h as follows: Copy typedef unsigned int ULONG32; |
ULONG64 | Unsigned LONG64. The range is 0 through 18446744073709551615 decimal. This type is declared in BaseTsd.h as follows: Copy typedef unsigned __int64 ULONG64; |
UNICODE_STRING | A Unicode string. This type is declared in Winternl.h as follows: Copy typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING; typedef UNICODE_STRING *PUNICODE_STRING; typedef const UNICODE_STRING *PCUNICODE_STRING; |
USHORT | Unsigned SHORT. The range is 0 through 65535 decimal. This type is declared in WinDef.h as follows: Copy typedef unsigned short USHORT; |
USN | Update sequence number (USN). This type is declared in WinNT.h as follows: Copy typedef LONGLONG USN; |
VOID | Any type. This type is declared in WinNT.h as follows: Copy #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: Copy typedef wchar_t WCHAR; |
WINAPI | Calling convention for system functions. This type is declared in WinDef.h as follows: Copy #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. |
WORD | 16-bit unsigned integer. The range is 0 through 65535 decimal. This type is declared in WinDef.h as follows: Copy typedef unsigned short WORD; |
WPARAM | Message parameter. This type is declared in WinDef.h as follows: Copy typedef UINT_PTR WPARAM; |
Community ContentAdd
LONGLONG - defined via double? Edit
LONGLONG
64-bit signed integer. The range is –9223372036854775808 through 9223372036854775807 decimal.
This type is declared in WinNT.h as follows:
#if !defined(_M_IX86)
typedef __int64 LONGLONG;
#else
typedef double LONGLONG;
#endif
Is it in above is typing error?
The datatype "double" is defined:
Type double is a floating type that is larger than or equal to type float, but shorter than or equal to the size of type longdouble.1 http://msdn.microsoft.com/en-us/library/cc953fe1.aspx
History
3/16/2010
u_margus
3/16/2010
u_margus
HWND can't be read Edit
Note that
though HWND is a "pointer to void *"
or (in the VBasic example) an IntPtr (pointer to an int)
you can't actually read the value it points to, or write to that location. It's just a pointer into some deep dark windows data structure, and the fact that it points into that exact location is all it gives you. You'll get a memory read exception if you try to read from that location.
History
3/1/2010
rogerdpack
Visual Basic 9 Equivalents for PInvoke Edit
MSDN Type Visual Basic 9 Type
ATOM UShort
BOOL Integer
BOOLEAN Byte
BYTE Byte
CALLBACK Delegate
CHAR SByte
COLORREF UInteger
CONST Const
DWORD UInteger
DWORDLONG ULong
DWORD_PTR UInteger (ULong)
DWORD32 UInteger
DWORD64 Long
FLOAT Single
HACCEL IntPtr
HALF_PTR Short (Integer)
HANDLE IntPtr
HBITMAP IntPtr
HBRUSH IntPtr
HCONV IntPtr
HCONVLIST IntPtr
HCURSOR IntPtr
HDC IntPtr
HDDEDATA IntPtr
HDESK IntPtr
HDROP IntPtr
HDWP IntPtr
HENHMETAFILE IntPtr
HFILE Integer
HFONT IntPtr
HGIDOBJ IntPtr
HGLOBAL IntPtr
HHOOK IntPtr
HICON IntPtr
HINSTANCE IntPtr
HKEY IntPtr
HKL IntPtr
HLOCAL IntPtr
HMENU IntPtr
HMETAFILE IntPtr
HMODULE IntPtr
HMONITOR IntPtr
HPALETTE IntPtr
HPEN IntPtr
HRESULT Integer
HRGN IntPtr
HRSRC IntPtr
HSZ IntPtr
HWINSTA IntPtr
HWND IntPtr
INT_PTR Integer (Long)
INT32 Integer
INT64 Long
LANGID UShort
LCID UInteger
LGRPID UInteger
LONG Integer
LONGLONG Long
LONG_PTR Integer (Long)
LONG32 Integer
LONG64 Long
LPARAM Integer (Long)
LPBOOL ByRef Integer
LPBYTE ByRef Byte
LPCOLORREF UInteger
LPCSTR ByRef SByte
LPCTSTR ByRef Char
LPCWSTR ByRef Char
LPDWORD UInteger
LPHANDLE ByRef IntPtr
LPINT Integer (Long)
LPLONG Integer
LPSTR ByRef SByte
LPTSTR ByRef Char
LPVOID IntPtr
LPWORD UShort
LPWSTR ByRef Char
LRESULT Integer (Long)
PBOOL Integer (Long)
PBOOLEAN ByRef Byte
PBYTE ByRef Byte
PCHAR ByRef SByte
PCSTR ByRef SByte
PCTSTR ByRef Char
PCWSTR ByRef Char
PDWORD UInteger
PDWORDLONG ByRef ULong
PDWORD_PTR ByRef UInteger (ULong)
PDWORD32 ByRef UInteger
PDWORD64 ByRef Long
PFLOAT ByRef Single
PHALF_PTR ByRef Short (Integer)
PHANDLE ByRef IntPtr
PHKEY ByRef IntPtr
PINT Integer (Long)
PINT_PTR ByRef Integer (Long)
PINT32 ByRef Integer
PINT64 ByRef Long
PLCID UInteger
PLONG Integer
PLONGLONG ByRef Long
PLONG_PTR ByRef Integer (Long)
PLONG32 ByRef Integer
PLONG64 ByRef Long
POINTER_32 (IntPtr)
POINTER_64 IntPtr
POINTER_SIGNED IntPtr
POINTER_UNSIGNED UIntPtr
PSHORT Short
PSIZE_T ByRef UInteger (ULong)
PSSIZE_T ByRef Integer (Long)
PSTR ByRef SByte
PTBYTE ByRef Char
PTCHAR ByRef Char
PTSTR ByRef Char
PUCHAR ByRef Byte
PUHALF_PTR ByRef UShort (UInteger)
PUINT ByRef UInteger
PUINT_PTR ByRef UInteger (ULong)
PUINT32 ByRef UInteger
PUINT64 ByRef ULong
PULONG UInteger
PULONGLONG ByRef ULong
PULONG_PTR ByRef UInteger (ULong)
PULONG32 ByRef UInteger
PULONG64 ByRef ULong
PUSHORT UShort
PVOID IntPtr
PWCHAR ByRef Char
PWORD UShort
PWSTR ByRef Char
SC_HANDLE IntPtr
SC_LOCK IntPtr
SERVICE_STATUS_HANDLE IntPtr
SHORT Short
SIZE_T UInteger (ULong)
SSIZE_T Integer (Long)
TBYTE Char
TCHAR Char
UCHAR Byte
UHALF_PTR UShort (UInteger)
UINT UInteger
UINT_PTR UInteger (ULong)
UINT32 UInteger
UINT64 ULong
ULONG UInteger
ULONGLONG ULong
ULONG_PTR UInteger (ULong)
ULONG32 UInteger
ULONG64 ULong
UNICODE_STRING Structure UNICODE_STRING : Dim Lenght As UShort, MaximumLenght As UShort, ByRef Buffer As Char : End Structure
USHORT UShort
USN Long
VOID Object
WCHAR Char
WIANPI Delegate
WORD UShort
WPARAM UInteger (ULong)
2 types means 32bit plaform (64bit platform)
Assumes #Unicode directive
Assumest highest Windows version possible
See full table http://spreadsheets.google.com/ccc?key=pK5CEcdG9GYGeO7K2dmEcBg
相关文章推荐
- Windows Data Types
- Windows Data Types
- Windows Data Types
- Windows Data Types
- windows data types
- Windows Data Types(VC VS .NET windows数据类型)
- Windows Data Types
- Windows Data Types
- Windows Data Types
- Windows Data Types
- Windows Data Types and Data Type Ranges
- Windows Data Types(来自MSDN)
- Windows Data Types
- Windows Data Types
- Windows Data Types --- 字符串指针
- Windows Data Types
- Lengths of Primitive Java and C++ Data Types on Linux and Windows 32-bit/64-bit (Linux和Windows上Java和C++基本数据类型的长度对比32位/64位)
- Windows Data Types
- TYPES与DATA TYPE与LIKE 区别(转)
- [Android JNI] JNI Types and Data Structures