我正在努力理解这个概念:我有一个固定的大小定义:
(来自http://msdn.microsoft.com/pt-br/library/aa931918.aspx)
typedef struct _FlashRegion {
REGION_TYPE regionType;
DWORD dwStartPhysBlock;
DWORD dwNumPhysBlocks;
DWORD dwNumLogicalBlocks;
DWORD dwSectorsPerBlock;
DWORD dwBytesPerBlock;
DWORD dwCompactBlocks;
} FlashRegion, *PFlashRegion;
Run Code Online (Sandbox Code Playgroud)
这个FlashRegion结构用于另一个结构:(来自:http://msdn.microsoft.com/pt-br/library/aa932688.aspx)
typedef struct _FlashInfoEx {
DWORD cbSize;
FLASH_TYPEflashType;
DWORD dwNumBlocks;
WORD dwDataBytesPerSector;
DWORD dwNumRegions;
FlashRegion region[1];
} FlashInfoEx, *PFlashInfoEx;
Run Code Online (Sandbox Code Playgroud)
问题是,我可以在FlashInfoEx中包含可变数量的FlashRegions.我调试的函数在代码中的某处执行此操作:
memcpy (pFlashInfoEx->region, g_pStorageDesc->pRegionTable,
g_pStorageDesc->dwNumRegions * sizeof(FlashRegion));
Run Code Online (Sandbox Code Playgroud)
这意味着它将一定数量的区域复制到pFlashInfoEx(我在函数的调用中传递);
因此,如果dwNumRegions大于1,代码将覆盖内存.如果是这种情况,我应该在我的代码中创建一个FlashRegion [FIXED_SIZE],并以某种方式在FlashInfoEx-> region中放置/覆盖?我怎么做?
谢谢,马塞洛