API Data Type |
Type Description |
C# Type |
API Data Type |
Type Description |
C# Type |
WORD |
16 bit unsigned int |
ushort |
CHAR |
char |
char |
LONG |
32 bit unsigned int |
int |
DWORDLONG |
64 bit long int |
long |
DWORD |
32 bit unsigned int |
uint |
HDC |
Device decription table handle |
int |
HANDLE |
handle,32 bit int |
int |
HGDIOBJ |
GDI object handle |
int |
UINT |
32 bit unsigned int |
uint |
HINSTANCE |
Instance handle |
int |
BOOL |
32bit bool |
bool |
HWM |
Window handle |
int |
LPSTR |
32-bit pointer pointing to the character |
string |
HPARAM |
32 bit message parameters |
int |
LPCSTR |
32-bit pointer pointing to the const character |
String |
LPARAM |
32 bit message parameters |
int |
BYTE |
byte |
byte |
WPARAM |
32 bit message parameters |
int |
Unmanaged Types in Wtypes.h |
Unmanaged C Types |
Managed class name |
Comment |
HANDLE |
void* |
System.IntPtr |
32 bit |
BYTE |
unsigned char |
System.Byte |
8 bit |
SHORT |
short |
System.Int16 |
16 bit |
WORD |
unsigned short |
System.UInt16 |
16 bit |
INT |
int |
System.Int32 |
32 bit |
UINT |
unsigned int |
System.UInt32 |
32 bit |
LONG |
long |
System.Int32 |
32 bit |
BOOL |
long |
System.Int32 |
32 bit |
DWORD |
unsigned long |
System.UInt32 |
32 位 |
ULONG |
unsigned long |
System.UInt32 |
32 位 |
CHAR |
char |
System.Char |
use ANSI |
LPSTR |
char* |
System.String 或 System.StringBuilder |
use ANSI |
LPCSTR |
Const char* |
System.String 或 System.StringBuilder |
use ANSI |
LPWSTR |
wchar_t* |
System.String 或 System.StringBuilder |
use Unicode |
LPCWSTR |
Const wchar_t* |
System.String 或 System.StringBuilder |
use Unicode |
FLOAT |
Float |
System.Single |
32 bit |
DOUBLE |
Double |
System.Double |
64 bit |
Types map to System namespace in C++ |
|
|
|
|
BOOL=System.Int32 |
HGDIOBJ=System.IntPtr |
LONG32=System.Int32 |
PCHAR=System.Char[] |
PWORD=System.Int16[] |
BOOLEAN=System.Int32 |
HGLOBAL=System.IntPtr |
LONG64=System.Int64 |
PCSTR=System.String |
PWSTR=System.String |
BYTE=System.UInt16 |
HHOOK=System.IntPtr |
LONGLONG=System.Int64 |
PCTSTR=System.String |
REGSAM=System.UInt32 |
CHAR=System.Int16 |
HICON=System.IntPtr |
LPARAM=System.IntPtr |
PCWCH=System.UInt32 |
SC_HANDLE=System.IntPtr |
COLORREF=System.UInt32 |
HIMAGELIST=System.IntPtr |
LPBOOL=System.Int16[] |
PCWSTR=System.UInt32 |
SC_LOCK=System.IntPtr |
DWORD=System.UInt32 |
HIMC=System.IntPtr |
LPBYTE=System.UInt16[] |
PDWORD=System.Int32[] |
SHORT=System.Int16 |
DWORD32=System.UInt32 |
HINSTANCE=System.IntPtr |
LPCOLORREF=System.UInt32[] |
PFLOAT=System.Float[] |
SIZE_T=System.UInt32 |
DWORD64=System.UInt64 |
HKEY=System.IntPtr |
LPCSTR=System.String |
PHANDLE=System.UInt32 |
SSIZE_=System.UInt32 |
FLOAT=System.Float |
HLOCAL=System.IntPtr |
LPCTSTR=System.String |
PHKEY=System.UInt32 |
TBYTE=System.Char |
HACCEL=System.IntPtr |
HMENU=System.IntPtr |
LPCVOID=System.UInt32 |
PINT=System.Int32[] |
TCHAR=System.Char |
HANDLE=System.IntPtr |
HMETAFILE=System.IntPtr |
LPCWSTR=System.String |
PLCID=System.UInt32 |
UCHAR=System.Byte |
HBITMAP=System.IntPtr |
HMODULE=System.IntPtr |
LPDWORD=System.UInt32[] |
PLONG=System.Int32[] |
UINT=System.UInt32 |
HBRUSH=System.IntPtr |
HMONITOR=System.IntPtr |
LPHANDLE=System.UInt32 |
PLUID=System.UInt32 |
UINT32=System.UInt32 |
HCONV=System.IntPtr |
HPALETTE=System.IntPtr |
LPINT=System.Int32[] |
PSHORT=System.Int16[] |
UINT64=System.UInt64 |
HCONVLIST=System.IntPtr |
HPEN=System.IntPtr |
LPLONG=System.Int32[] |
PSTR=System.String |
ULONG=System.UInt32 |
HCURSOR=System.IntPtr |
HRGN=System.IntPtr |
LPSTR=System.String |
PTBYTE=System.Char[] |
ULONG32=System.UInt32 |
HDC=System.IntPtr |
HRSRC=System.IntPtr |
LPTSTR=System.String |
PTCHAR=System.Char[] |
ULONG64=System.UInt64 |
HDDEDATA=System.IntPtr |
HSZ=System.IntPtr |
LPVOID=System.UInt32 |
PTSTR=System.String |
ULONGLONG=System.UInt64 |
HDESK=System.IntPtr |
HWINSTA=System.IntPtr |
LPWORD=System.Int32[] |
PUCHAR=System.Char[] |
USHORT=System.UInt16 |
HDROP=System.IntPtr |
HWND=System.IntPtr |
LPWSTR=System.String |
PUINT=System.UInt32[] |
WORD=System.UInt16 |
HDWP=System.IntPtr |
INT=System.Int32 |
LRESULT=System.IntPtr |
PULONG=System.UInt32[] |
WPARAM=System.IntPtr |
HENHMETAFILE=System.IntPtr |
INT32=System.Int32 |
PBOOL=System.Int16[] |
PUSHORT=System.UInt16[] |
|
HFILE=System.IntPtr |
INT64=System.Int64 |
PBOOLEAN=System.Int16[] |
PVOID=System.UInt32 |
|
HFONT=System.IntPtr |
LONG=System.Int32 |
PBYTE=System.UInt16[] |
PWCHAR=System.Char[] |
|
An example:
C# Method |
IDL Equivalent |
Calling semantics in C# |
public void Method(String strInput); |
HRESULT Method([in] BSTR strInput); |
obj.Method("Hello There"); |
public String Method(); |
HRESULT Method([out, retval] BSTR* pRetVal); |
String strOutput = obj.Method(); |
public String Method(ref String strPassAndModify); |
HRESULT Method([in, out] BSTR* strPassAndModify, [out, retval] BSTR* pRetVal); |
String strHello = "Hello There"; String strOutput = obj.Method(ref strHello); |
public String Method(out String strReturn); |
HRESULT Method([out] BSTR* strReturn, [out, retval] BSTR* pRetVal); |
//Need not initialize strHello String strHello; String strOutput = obj.Method(out strHello); |
public String Method(String strFirst, out String strSecond, ref String strThird); |
HRESULT Method([in] BSTR bstrFirst, [out] BSTR* strSecond, [in, out] BSTR* strThird, [out, retval] BSTR* pRetVal); |
String strFirst = "Hi There"; String strSecond; String strThird = "Hello World"; String strOutput = obj.Method(strFirst,out strSecond, ref strThird); |
COM Data Types From Microsoft
Pasted from <http://msdn.microsoft.com/en-us/library/sak564ww(v=VS.71).aspx>
COM value type |
COM reference type |
System type |
bool |
bool * |
|
char, small |
char *, small * |
|
short |
short * |
|
long, int |
long *, int * |
|
Hyper |
hyper * |
|
unsigned char, byte |
unsigned char *, byte * |
|
wchar_t, unsigned short |
wchar_t *, unsigned short * |
|
unsigned long, unsigned int |
unsigned long *, unsigned int * |
|
unsigned hyper |
unsigned hyper * |
|
float |
float * |
|
double |
double * |
|
VARIANT_BOOL |
VARIANT_BOOL * |
|
void * |
void ** |
|
HRESULT |
HRESULT * |
System.Int16 or System.IntPtr |
SCODE |
SCODE * |
System.Int32 |
BSTR |
BSTR * |
|
LPSTR or [string, ...] char * |
LPSTR * |
System.String |
LPWSTR or [string, ...] wchar_t * |
LPWSTR * |
System.String |
VARIANT |
VARIANT * |
|
DECIMAL |
DECIMAL * |
|
DATE |
DATE * |
|
GUID |
GUID * |
|
CURRENCY |
CURRENCY * |
|
IUnknown * |
IUnknown ** |
System.Object |
IDispatch * |
IDispatch ** |
System.Object |
SAFEARRAY(type) |
SAFEARRAY(type) * |
type[] |
The following table lists COM value and reference types that convert to corresponding element types. For example, a COM coclass automatically maps to a managed class with the same name.
COM value type |
COM reference type |
Element type |
typedef BaseType MyType |
ByRef BaseType |
BaseType |
MyStruct |
ByRef VALUETYPE<MyStruct> |
valuetype<MyStruct> |
MyEnum |
ByRef VALUETYPE<MyEnum> |
valuetype<MyEnum> |
MyInterface * |
ByRef CLASS <MyInterface> |
Class <MyInterface> |
MyCoClass |
ByRef CLASS <_Class> |
class <_Class> |
Pasted from <http://msdn.microsoft.com/en-us/library/sak564ww(v=VS.71).aspx>