如何分配SP

编程入门 行业动态 更新时间:2024-10-23 23:22:48
如何分配SP_DEVICE_INTERFACE_DETAIL_DATA?(How to allocate SP_DEVICE_INTERFACE_DETAIL_DATA?)

SP_DEVICE_INTERFACE_DETAIL_DATA是一个可变长度结构,从包含其大小的字段开始,后跟一个数组(不是指向一个数组的指针)。

分配具有所需数组长度的结构的便捷方法是什么?

SP_DEVICE_INTERFACE_DETAIL_DATA is a variable-length structure, beginning with a field containing its size followed by an array (not a pointer to one).

What is a convenient way to allocate this structure with a desired array length?

最满意答案

我像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的例子(也在他的博客上讨论过),我可以按如下方式分配SP_DEVICE_INTERFACE_DETAIL_DATA结构:

PSP_DEVICE_INTERFACE_DETAIL_DATA pDIDD = malloc(FIELD_OFFSET(SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath[bufferlen]));

I did it like MSalters suggested:

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]);

Edit:

Following Raymond Chen's example (as also discussed on his blog) I could allocate the SP_DEVICE_INTERFACE_DETAIL_DATA structure as follows:

PSP_DEVICE_INTERFACE_DETAIL_DATA pDIDD = malloc(FIELD_OFFSET(SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath[bufferlen]));

更多推荐

本文发布于:2023-07-26 15:38:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1277430.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分配   SP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!