Как определить типы «UCHAR * POINTER_32» и «VOID * POINTER_32» в Delphi?
ПереводяIP_OPTION_INFORMATION32
а такжеICMP_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;
Для 64-битной целевой платформы Delphi XE2 я бы написал:
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;
Вопрос:Как бы вы определилиUCHAR * POINTER_32
а такжеVOID * POINTER_32
типы в Delphi для 64-битной целевой платформы? Насколько я знаю, 32-битный тип указателя не доступен для 64-битной целевой платформы, и мне просто не нравится, когда его определяют, например. какInt32
тип :-)
Каков наиболее точный перевод для указанных типов?