我想从DXGI库中转移一种结构,但是遇到了一个问题。目标结构包含一个指向结构数组的指针,在第二个之后,其中第一个表示该数组的大小。而且我不想直接使用指向数组的指针,而是在编组器的帮助下完成所需的工作。
我试图这样做:
[StructLayout(LayoutKind.Sequential)]
public struct PresentParameters
{
public uint DirtyRectsCount { get; set; }
[field: MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Struct, SizeParamIndex = 0)]
public Rect[] DirtyRects { get; set; }
[field: MarshalAs(UnmanagedType.LPStruct)]
public Rect ScrollRect { get; set; }
[field: MarshalAs(UnmanagedType.LPStruct)]
public Point ScrollOffset { get; set; }
}
但是原始结构如下:
typedef struct DXGI_PRESENT_PARAMETERS
{
UINT DirtyRectsCount;
/* [annotation] */
_Field_size_full_opt_(DirtyRectsCount) RECT *pDirtyRects;
RECT *pScrollRect;
POINT *pScrollOffset;
} DXGI_PRESENT_PARAMETERS;
是否有可能这样做,或者值得描述一个将执行此任务的定制编组?