C#中调用Windows API时的数据类型对应关系

简介: 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32   BOOLEAN=System.Int32   BYTE=System.UInt16   CHAR=System.

原文 C#中调用Windows API时的数据类型对应关系

BOOL=System.Int32  

BOOLEAN=System.Int32  

BYTE=System.UInt16  

CHAR=System.Int16  

COLORREF=System.UInt32  

DWORD=System.UInt32  

DWORD32=System.UInt32  

DWORD64=System.UInt64  

FLOAT=System.Float  

HACCEL=System.IntPtr  

HANDLE=System.IntPtr  

HBITMAP=System.IntPtr  

HBRUSH=System.IntPtr  

HCONV=System.IntPtr  

HCONVLIST=System.IntPtr  

HCURSOR=System.IntPtr  

HDC=System.IntPtr  

HDDEDATA=System.IntPtr  

HDESK=System.IntPtr  

HDROP=System.IntPtr  

HDWP=System.IntPtr  

HENHMETAFILE=System.IntPtr  

HFILE=System.IntPtr  

HFONT=System.IntPtr  

HGDIOBJ=System.IntPtr  

HGLOBAL=System.IntPtr  

HHOOK=System.IntPtr  

HICON=System.IntPtr  

HIMAGELIST=System.IntPtr  

HIMC=System.IntPtr  

HINSTANCE=System.IntPtr  

HKEY=System.IntPtr  

HLOCAL=System.IntPtr  

HMENU=System.IntPtr  

HMETAFILE=System.IntPtr  

HMODULE=System.IntPtr  

HMONITOR=System.IntPtr  

HPALETTE=System.IntPtr

 HPEN=System.IntPtr  

HRGN=System.IntPtr  

HRSRC=System.IntPtr  

HSZ=System.IntPtr  

HWINSTA=System.IntPtr  

HWND=System.IntPtr  

INT=System.Int32  

INT32=System.Int32  

INT64=System.Int64  

LONG=System.Int32  

LONG32=System.Int32  

LONG64=System.Int64  

LONGLONG=System.Int64  

LPARAM=System.IntPtr

 LPBOOL=System.Int16[]  

LPBYTE=System.UInt16[]  

LPCOLORREF=System.UInt32[]  

LPCSTR=System.String  

LPCTSTR=System.String  

LPCVOID=System.UInt32

 LPCWSTR=System.String  

LPDWORD=System.UInt32[]  

LPHANDLE=System.UInt32  

LPINT=System.Int32[]  

LPLONG=System.Int32[]  

LPSTR=System.String  

LPTSTR=System.String  

LPVOID=System.UInt32  

LPWORD=System.Int32[]  

LPWSTR=System.String  

LRESULT=System.IntPtr  

PBOOL=System.Int16[]  

PBOOLEAN=System.Int16[]  

PBYTE=System.UInt16[]  

PCHAR=System.Char[]  

PCSTR=System.String  

PCTSTR=System.String  

PCWCH=System.UInt32  

PCWSTR=System.UInt32  

PDWORD=System.Int32[]  

PFLOAT=System.Float[]  

PHANDLE=System.UInt32  

PHKEY=System.UInt32  

PINT=System.Int32[]  

PLCID=System.UInt32  

PLONG=System.Int32[]  

PLUID=System.UInt32  

PSHORT=System.Int16[]  

PSTR=System.String  

PTBYTE=System.Char[]  

PTCHAR=System.Char[]  

PTSTR=System.String  

PUCHAR=System.Char[]  

PUINT=System.UInt32[]

 PULONG=System.UInt32[]  

PUSHORT=System.UInt16[]  

PVOID=System.UInt32  

PWCHAR=System.Char[]  

PWORD=System.Int16[]  

PWSTR=System.String  

REGSAM=System.UInt32  

SC_HANDLE=System.IntPtr  

SC_LOCK=System.IntPtr  

SHORT=System.Int16  

SIZE_T=System.UInt32  

SSIZE_=System.UInt32  

TBYTE=System.Char  

TCHAR=System.Char  

UCHAR=System.Byte  

UINT=System.UInt32  

UINT32=System.UInt32  

UINT64=System.UInt64  

ULONG=System.UInt32  

ULONG32=System.UInt32  

ULONG64=System.UInt64  

ULONGLONG=System.UInt64  

USHORT=System.UInt16  

WORD=System.UInt16  

WPARAM=System.IntPtr  

 

C++            C#
=====================================
WORD              ushort
DWORD             uint
UCHAR             int/byte   大部分情况都可以使用int代替,而如果需要严格对齐的话则应该用bytebyte 
UCHAR*            string/IntPtr
unsigned char*    [MarshalAs(UnmanagedType.LPArray)]byte[]/?(Intptr)
char*             string/StringBuilder
LPCTSTR           string
LPTSTR            [MarshalAs(UnmanagedType.LPTStr)] string
long              int
ulong             uint
Handle            IntPtr
HWND              IntPtr
void*             IntPtr
int               int
int*              ref int
*int              IntPtr
unsigned int      uint
COLORREF          uint

 

附:举一个声明API的例子  

[ DllImport( "Kernel32.dll" )]

 public static extern System.UInt32 VirtualAllocEx(

 System.IntPtr hProcess,  

System.UInt32 lpAddress,  

System.UInt32 dwSize,  

System.UInt32 flAllocationType,  

System.UInt32 flProtect

 );

 

转:http://www.cnblogs.com/ausoldier/archive/2007/12/07/986141.html

 

 

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 位

目录
相关文章
|
26天前
|
设计模式 开发框架 安全
C# 一分钟浅谈:GraphQL API 与 C#
本文介绍了 GraphQL API 的基本概念及其优势,并通过 C# 实现了一个简单的 GraphQL 服务。GraphQL 是一种高效的 API 查询语言,允许客户端精确请求所需数据,减少不必要的数据传输。文章详细讲解了如何使用 `GraphQL.NET` 库在 C# 中创建和配置 GraphQL 服务,并提供了常见问题的解决方案和代码示例。
42 4
|
2月前
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
77 7
|
3月前
|
存储 C# 索引
C# 一分钟浅谈:变量与数据类型简介
【9月更文挑战第1天】在 C# 编程中,了解变量与数据类型至关重要。本文详细介绍了 C# 中的值类型(如整数、浮点数、布尔值等)和引用类型(如类、接口、数组、字符串)。通过示例代码展示了变量的声明与使用方法,并针对数据类型转换错误、变量未初始化及数值溢出等常见问题提供了解决方案。正确选择数据类型不仅能提升程序性能,还可避免潜在错误,有助于编写高质量代码。
136 47
|
23天前
|
开发框架 .NET API
以C#一分钟浅谈:GraphQL 数据类型与查询
本文从C#开发者的角度介绍了GraphQL的基本概念、核心组件及其实现方法。GraphQL由Facebook开发,允许客户端精确请求所需数据,提高应用性能。文章详细讲解了如何在C#中使用`GraphQL.NET`库创建Schema、配置ASP.NET Core,并讨论了GraphQL的数据类型及常见问题与解决方案。通过本文,C#开发者可以更好地理解并应用GraphQL,构建高效、灵活的API。
98 64
|
20天前
|
开发框架 .NET 测试技术
C# 一分钟浅谈:GraphQL 数据类型与查询
本文介绍了GraphQL的基本概念、数据类型及查询方法,重点从C#角度探讨了GraphQL的应用。通过Hot Chocolate库的实例,展示了如何在ASP.NET Core中实现GraphQL API,包括安装、定义Schema、配置及运行项目。文中还讨论了常见问题与解决方案,旨在帮助开发者更好地理解和使用GraphQL。
23 2
|
2月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
106 9
|
3月前
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
|
2月前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
57 0
|
2月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
54 0
|
2月前
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
71 0
下一篇
DataWorks