windows api 里 函数的 参数的类型 为DWORD_PTR 这个在c# 里是什么类型啊
5个回答
展开全部
你最好别用unsigned int直接代替,原因如下:
关于这个DWORD_PTR你要注意32位和64位的兼容性问题。
DWORD本来被定义为unsigned long,DWORD的含义就是双字,一个字是2字节,双字就是32字节。
但是在C/C++中,经常会用到把一个指针转换成数字储存,然后再将其传唤为指针调用。那么在32位系统下,指针是32位长度的,在64位系统下,指针是64位长度的,所以微软引入了DWORD_PTR和INT_PTR等带_PTR的类型,这些类型是这么保证的:将指针转换成带_PTR的类型然后再转换回来,可以得到原始的指针,不会发生截断。在实现上,DWORD_PTR在32位程序和64位程序的定义是不同的,32位定位为unsigned long,64位定义为unsigend __int64。
基于这个要求,你最好使用C#提供的类似的功能:
System.UIntPtr
这个数据类型对应C语言里面带_PTR的类型,保证程序在32位平台和64位平台,以及今后会出现的128位平台都可以正常运行。
关于这个DWORD_PTR你要注意32位和64位的兼容性问题。
DWORD本来被定义为unsigned long,DWORD的含义就是双字,一个字是2字节,双字就是32字节。
但是在C/C++中,经常会用到把一个指针转换成数字储存,然后再将其传唤为指针调用。那么在32位系统下,指针是32位长度的,在64位系统下,指针是64位长度的,所以微软引入了DWORD_PTR和INT_PTR等带_PTR的类型,这些类型是这么保证的:将指针转换成带_PTR的类型然后再转换回来,可以得到原始的指针,不会发生截断。在实现上,DWORD_PTR在32位程序和64位程序的定义是不同的,32位定位为unsigned long,64位定义为unsigend __int64。
基于这个要求,你最好使用C#提供的类似的功能:
System.UIntPtr
这个数据类型对应C语言里面带_PTR的类型,保证程序在32位平台和64位平台,以及今后会出现的128位平台都可以正常运行。
展开全部
DWORD_PTR
Unsigned long type for pointer precision.
无符号长整形指针
Unsigned long type for pointer precision.
无符号长整形指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
uint
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DWORD dwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD_PTR dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel;
WORD wProcessorRevision;
WORD wProcessorArchitecture;
WORD wReserved;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD_PTR dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel;
WORD wProcessorRevision;
WORD wProcessorArchitecture;
WORD wReserved;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你直接用 int 代替
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询