SP_DEVICE_INTERFACE_DETAIL_DATA
是一个可变长度的结构,从包含其大小的字段开始,后跟一个数组(不是指向一个数组的指针)。
使用所需的数组长度分配此结构的简便方法是什么?
答案 0 :(得分:-1)
我做的就像MSalters建议的那样:
std::vector<char> rawbuf(sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA) + bufferlen);
SP_DEVICE_INTERFACE_DETAIL_DATA* pDIDD =
reinterpret_cast<SP_DEVICE_INTERFACE_DETAIL_DATA*>(&rawbuf[0]);
修改强>
按照Raymond Chen的例子(也讨论on his blog),我可以按如下方式分配SP_DEVICE_INTERFACE_DETAIL_DATA
结构:
PSP_DEVICE_INTERFACE_DETAIL_DATA pDIDD =
malloc(FIELD_OFFSET(SP_DEVICE_INTERFACE_DETAIL_DATA,
DevicePath[bufferlen]));