最近在研究pos打印机相关功能, 调用winapi以及跨进程通信等,都涉及到类型之间的转换。
C/C++
C#
HANDLE, LPDWORD, LPVOID, void*
IntPtr
LPCTSTR, LPCTSTR, LPSTR, char*, const char*, Wchar_t*, LPWSTR
String [in], StringBuilder [in, out]
DWORD, unsigned long, Ulong
UInt32, [MarshalAs(UnmanagedType.U4)]
bool
bool
LP<struct>
[In] ref <struct>
SIZE_T
uint
LPDWORD
out uint
LPTSTR
[Out] StringBuilder
PULARGE_INTEGER
out ulong
WORD
uInt16
Byte, unsigned char
byte
Short
Int16
Long, int
Int32
float
single
double
double
NULL pointer
IntPtr.Zero
Uint
Uint32
Windows Data Type
.NET Data Type
BOOL, BOOLEAN
Boolean or Int32
BSTR
String
BYTE
Byte
CHAR
Char
DOUBLE
Double
DWORD
Int32 or UInt32
FLOAT
Single
HANDLE (and all other handle types, such as HFONT and HMENU)
IntPtr, UintPtr or HandleRef
Int32 or UInt32
INT
Int32
LANGID
Int16 or UInt16
LCID
Int32 or UInt32
LONG
Int32
LPARAM
IntPtr, UintPtr or Object
LPCSTR
String
LPCTSTR
String
LPCWSTR
String
LPSTR
String or StringBuilder*
LPTSTR
String or StringBuilder
LPWSTR
String or StringBuilder
LPVOID
IntPtr, UintPtr or Object
LRESULT
IntPtr
SAFEARRAY
.NET array type
SHORT
Int16
TCHAR
Char
UCHAR
SByte
UINT
Int32 or UInt32
ULONG
Int32 or UInt32
VARIANT
Object
VARIANT_BOOL
Boolean
WCHAR
Char
WORD
Int16 or UInt16
WPARAM
IntPtr, UintPtr or Object
Wtypes.h 中的非托管类型
非托管 C 语言类型
托管类名
说明
HANDLE
void*
System.IntPtr
在 32 位 Windows 操作系统上为 32 位,在 64 位 Windows 操作系统上为 64 位。
BYTE
unsigned char
System.Byte
8 位
SHORT
short
System.Int16
16 位
WORD
unsigned short
System.UInt16
16 位
INT
int
System.Int32
32 位
UINT
unsigned int
System.UInt32
32 位
LONG
long
System.Int32
32 位
BOOL
long
System.Int32
32 位
DWORD
unsigned long
System.UInt32
32 位
ULONG
unsigned long
System.UInt32
32 位
CHAR
char
System.Char
用 ANSI 修饰。
LPSTR
char*
System.String 或 System.Text.StringBuilder
用 ANSI 修饰。
LPCSTR
Const char*
System.String 或 System.Text.StringBuilder
用 ANSI 修饰。
LPWSTR
wchar_t*
System.String 或 System.Text.StringBuilder
用 Unicode 修饰。
LPCWSTR
Const wchar_t*
System.String 或 System.Text.StringBuilder
用 Unicode 修饰。
FLOAT
Float
System.Single
32 位
DOUBLE
Double
System.Double
64 位