delphixe2 SIZE_T=NativeUInt类型

本文介绍了 Delphi 中新增的 NativeInt 和 NativeUInt 类型,以及它们在 winapi.windows 中如何与 INT_PTR、LONG_PTR、SIZE_T 等类型关联。特别是针对 ReadProcessMemory 函数,指出最后一个参数由 longword 更改为 SIZE_T,即 NativeUInt,强调了类型转换的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类型实在是多啊,遇到一个看一个吧。

NativeInt和NativeUInt。以往没注意,记得只有 int8 int16 int32 uint8 uint16 uint32,没有这两个。这是定义在system里的。

在winapi.windows里面定义,

INT_PTR   LONG_PTR  SSIZE_T都是 NativeInt

 UINT_PTR ULONG_PTR  DWORD_PTR     SIZE_T 都是 NativeUInt

 

 INT_PTR = System.IntPtr;    // NativeInt;
  {$EXTERNALSYM INT_PTR}
  UINT_PTR = System.UIntPtr;  // NativeUInt;
  {$EXTERNALSYM UINT_PTR}
  LONG_PTR = NativeInt;
  {$EXTERNALSYM LONG_PTR}
  ULONG_PTR = NativeUInt;
  {$EXTERNALSYM ULONG_PTR}
  DWORD_PTR = ULONG_PTR;
  {$EXTERNALSYM DWORD_PTR}
  HANDLE_PTR = type NativeUInt;
  {$EXTERNALSYM HANDLE_PTR}
  SIZE_T = ULONG_PTR;
  {$EXTERNALSYM SIZE_T}
  SSIZE_T = LONG_PTR;
  {$EXTERNALSYM SSIZE_T}

 

这个定义关系到一个函数原型的变化:ReadProcessMemory

function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer;
  nSize: SIZE_T; var lpNumberOfBytesRead: SIZE_T): BOOL; stdcall;
{$EXTERNALSYM ReadProcessMemory}

最后一个参数,原来是longword,现在改为SIZE_T,即NativeUInt

NativeUInt是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值