c++结构体中的LPVOID

详细情况:参数返回结构体typedefstruct_wfs_result{REQUESTIDRequestID;HSERVICEhService;SYSTEMTIMEts... 详细情况:
参数返回结构体
typedef struct _wfs_result
{
REQUESTID RequestID;
HSERVICE hService;
SYSTEMTIME tsTimestamp;
HRESULT hResult;
union {
DWORD dwCommandCode;
DWORD dwEventID;
} u;
LPVOID lpBuffer;
} WFSRESULT, * LPWFSRESULT;

结构体中的LPVOID 类型
我想把
typedef struct _wfs_idc_card_data
{
WORD wDataSource;
WORD wStatus;
ULONG ulDataLength;
LPBYTE lpbData;
WORD fwWriteMethod;
} WFSIDCCARDDATA, *LPWFSIDCCARDDATA;
想把lpBuffer 赋给 WFSIDCCARDDATA 我该怎么做。谢谢
HRESULT hr;
LPWFSRESULT lpResult; //lpResult入参
WORD dwReadData = WFS_IDC_TRACK2 | WFS_IDC_TRACK3;
hr = WFSExecute(m_hCardService,
WFS_CMD_IDC_READ_RAW_DATA,
&dwReadData,
20000,
&lpResult);
if(WFS_SUCCESS == hr)
{
LPWFSIDCCARDDATA lpCardData = (LPWFSIDCCARDDATA )lpResult ->lpBuffer; //这样转换么
}
展开
 我来答
捐你妹8
推荐于2017-09-26 · TA获得超过638个赞
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:367万
展开全部
不是很明确你想干嘛。所以只能说些常识了……
首先LPVOID是宏定义出来的,表示的其实就是void*。而在C++中void*可以认为是任意类型的指针。所以如果这个指针指向的内存在加上任何强制转换后,都会尝试按照这种类型进行转换(是否成功不一定)。
如果你在保存这个lpBuffer的时候,其内部就是你要转换的WFSIDCCARDDATA结构,那么直接加上强制转换即可。
否则的话,你也可以加上这种转换,但结果就不确定了。
追问
LPWFSIDCCARDDATA lpCardData = (LPWFSIDCCARDDATA )lpResult ->lpBuffer; //这样转换么
追答
对的,如果指向的内存是可转换的,那么就不会出错,否则就会出错。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式