gpt4 book ai didi

delphi - 如何在Delphi中定义 "UCHAR * POINTER_32"和 "VOID * POINTER_32"类型?

转载 作者:行者123 更新时间:2023-12-03 15:29:05 25 4
gpt4 key购买 nike

背景:

翻译IP_OPTION_INFORMATION32ICMP_ECHO_REPLY32 64 位编译器的结构我一直纠结于在那里使用的数据类型。引用文献中的结构定义:

IP_OPTION_INFORMATION32 结构:

typedef struct _IP_OPTION_INFORMATION32 {
UCHAR Ttl;
UCHAR Tos;
UCHAR Flags;
UCHAR OptionsSize;
UCHAR * POINTER_32 OptionsData;
} IP_OPTION_INFORMATION32, *PIP_OPTION_INFORMATION32;

我会这样翻译(对于Delphi XE2,64位目标平台)。正如您所看到的,我不知道该结构的 OptionsData 字段使用什么类型:

IP_OPTION_INFORMATION32 = record
Ttl: UCHAR;
Tos: UCHAR;
Flags: UCHAR;
OptionsSize: UCHAR;
OptionsData: // what should I use here for UCHAR * POINTER_32 ?
end;

ICMP_ECHO_REPLY32结构:

typedef struct icmp_echo_reply32 {
IPAddr Address;
ULONG Status;
ULONG RoundTripTime;
USHORT DataSize;
USHORT Reserved;
VOID * POINTER_32 Data;
struct ip_option_information32 Options;
} ICMP_ECHO_REPLY32, *PICMP_ECHO_REPLY32;

对于 Delphi XE2 64 位目标平台,我会这样写:

ICMP_ECHO_REPLY32 = record
Address: TIPAddr; // defined before
Status: ULONG;
RoundTripTime: ULONG;
DataSize: USHORT;
Reserved: USHORT;
Data: // what should I use here for VOID * POINTER_32 ?
Options: IP_OPTION_INFORMATION32;
end;

问题:

如何在 Delphi 中为 64 位平台目标定义 UCHAR * POINTER_32VOID * POINTER_32 类型?据我所知,没有可用于 64 位平台目标的 32 位指针类型,我只是不喜欢定义它,例如作为 Int32 类型:-)

上述类型最准确的翻译是什么?

最佳答案

另一个 Stack Overflow 问题中涉及的 POINTER_32 内容问题:POINTER_32 - what is it, and why?

当与在不同进程(具有 32 位指针的进程)中定义的结构执行互操作时,您可以使用它。

Delphi 中没有相当于 __ptr32 的东西,因此除了将其声明为 32 位整数之外,您别无选择。我会使用无符号类型。

关于delphi - 如何在Delphi中定义 "UCHAR * POINTER_32"和 "VOID * POINTER_32"类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17084031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com