Platform Invoke Data Types
The following table lists data types used in the Win32 API (listed in Wtypes.h) and C-style functions. Many unmanaged libraries contain functions that pass these data types as parameters and return values. The third column lists the corresponding .NET Framework built-in value type or class that you use in managed code. In some cases, you can substitute a type of the same size for the type listed in the table.
Unmanaged type in Wtypes.h | Unmanaged C language type | Managed class name | Description |
---|---|---|---|
HANDLE | void* | System.IntPtr | 32 bits |
BYTE | unsigned char | System.Byte | 8 bits |
SHORT | short | System.Int16 | 16 bits |
WORD | unsigned short | System.UInt16 | 16 bits |
INT | int | System.Int32 | 32 bits |
UINT | unsigned int | System.UInt32 | 32 bits |
LONG | long | System.Int32 | 32 bits |
BOOL | long | System.Int32 | 32 bits |
DWORD | unsigned long | System.UInt32 | 32 bits |
ULONG | unsigned long | System.UInt32 | 32 bits |
CHAR | char | System.Char | Decorate with ANSI. |
LPSTR | char* | System.String or System.StringBuilder | Decorate with ANSI. |
LPCSTR | Const char* | System.String or System.StringBuilder | Decorate with ANSI. |
LPWSTR | wchar_t* | System.String or System.StringBuilder | Decorate with Unicode. |
LPCWSTR | Const wchar_t* | System.String or System.StringBuilder | Decorate with Unicode. |
FLOAT | Float | System.Single | 32 bits |
DOUBLE | Double | System.Double | 64 bits |
For corresponding types in Visual Basic .NET, C#, and the Managed Extensions for C++, see the Introduction to the .NET Framework Class Library.
See Also
Marshaling Data with Platform Invoke | Marshaling Strings | Marshaling Classes, Structures, and Unions | Marshaling Arrays of Types | Miscellaneous Marshaling Samples