我正在使用 Windows API,并且必须在 Delphi中重新创建一个结构record
。我想我已经记下来了,但这有点令人困惑,我需要确保我做对了。
这是原始的 C++ 结构:
typedef struct RETRIEVAL_POINTERS_BUFFER {
DWORD ExtentCount;
LARGE_INTEGER StartingVcn;
struct {
LARGE_INTEGER NextVcn;
LARGE_INTEGER Lcn;
} Extents[1];
} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
请注意,此结构中有一个数组结构。这就是我迷路的地方。如果我没记错的话,Delphi 版本应该是这样的:
TExtent = record
NextVcn: Integer;
Lcn: Integer;
end;
TExtents = array of TExtent;
PRETRIEVAL_POINTERS_BUFFER = ^TRETRIEVAL_POINTERS_BUFFER;
TRETRIEVAL_POINTERS_BUFFER = record
ExtentCount: DWORD;
StartingVcn: Integer;
Extents: TExtents;
end;
当我在 Windows API 中使用此结构时,它似乎确实有效。但是,由于结构内部的这个结构数组,我有点犹豫我是否正确地做到了这一点。这看起来对吗?