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 on 32-bit Windows operating systems, 64 bits on 64-bit Windows operating systems.

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.

WCHAR

wchar_t

System.Char

Decorate with Unicode.

LPSTR

char*

System.String or System.Text.StringBuilder

Decorate with ANSI.

LPCSTR

Const char*

System.String or System.Text.StringBuilder

Decorate with ANSI.

LPWSTR

wchar_t*

System.String or System.Text.StringBuilder

Decorate with Unicode.

LPCWSTR

Const wchar_t*

System.String or System.Text.StringBuilder

Decorate with Unicode.

FLOAT

Float

System.Single

32 bits

DOUBLE

Double

System.Double

64 bits

For corresponding types in Visual Basic 2005, C#, and C++, see the Introduction to the .NET Framework Class Library.

See Also

Concepts

Marshaling Strings

Marshaling Classes, Structures, and Unions

Marshaling Arrays of Types

Miscellaneous Marshaling Samples

Other Resources

Marshaling Data with Platform Invoke