【发布时间】:2013-08-15 21:35:40
【问题描述】:
我目前正在建模一种将原生 (Windows Data Types) 转换为 .NET 的类型转换机制
示例:
HANDLE = System.IntPtr
HDC = System.IntPtr
WORD = System.UInt16
INT_PTR 在它们各自的机器上是 32 位/64 位,所以在 .NET 中就是 System.IntPtr
HALF_PTR(和其他人)在各自的 32 位/64 位机器上是 16 位/32 位...
那么我将如何在 .NET 中为 HALF_PTR 建模 - 如果可能的话?
我想另一种看待这个问题的方式是:是否有一个与 C# 等效的“短”指针...类似于 ShortPtr?
【问题讨论】:
-
使用 HALF_PTR?因为如果它只是为一种或两种方法封送数据,那么为这些方法创建一些代理可能会更快。
-
@xanatos,你认为在这方面,我可以从我的代码中省略这种类型的“短”指针并警告用户使用它吗?
-
多年使用Win32 API我从未见过
HALF_PTR,似乎只在very specialized cases中使用;我什至不认为它实际上用于任何公共 API,因为谷歌搜索“HALF_PTR site:microsoft.com”并没有给出与struct或函数相关的任何结果。因此,我认为忽略它是安全的,并在它可能出现的极少数情况下提供警告,解释使用它的struct/ 函数需要手动干预。 -
@series0ne 向我们展示您想要转换的 API! :-) 否则它变成一个抽象问题。同一个问题通常有多种解决方案。