return 来自 C++ 中地址引用的值
return value from reference of address in C++
抱歉,如果我的措辞不正确,但这是代码:
typedef struct
{
unsigned char bSaveRestore;
unsigned short wPresetId;
}
uvcx_ucam_preset_t;
...
uvcx_ucam_preset_t data;
data.wPresetId = 0;
data.bSaveRestore = 0;
setProperty(&data);
...
setProperty(void *data ...)
{
//How to access wPresetId and bSaveRestore here...
// The next line is where I'm using it.
hr = ksControl->KsProperty((PKSPROPERTY)&extProp, sizeof(extProp), data, dataLen, &bytesReturned);}
/* Here is from hsproxy.h
STDMETHOD(KsProperty)(
THIS_
_In_reads_bytes_(PropertyLength) PKSPROPERTY Property,
_In_ ULONG PropertyLength,
_Inout_updates_bytes_(DataLength) LPVOID PropertyData,
_In_ ULONG DataLength,
_Inout_opt_ ULONG* BytesReturned
*/
最终,我想弄清楚为什么我的相机在提到的线路上重新启动,而其他结构似乎没问题。我只是从数据中看不到任何东西,但如果我在通话前中断,我可以看到数据没问题。我已经尝试在调用之前创建一个变量 void *test = &data 并且我在尝试访问数据时遇到了同样的问题。
我不知道如何处理 setProperty 中的数据。来自我在调试中的尝试:
data is the address.
&data is the address of the address.
*data gives an error "expression must be a point to a complete object type"
data
是uvcx_ucam_preset_t
类型的对象,&data
returns是data
的地址,即uvcx_ucam_preset_t*
类型的指针. setProperty
将 void*
作为参数,当传递 &data
时,指针隐式转换为 void*
。
在setProperty
中,如果你想访问数据成员wPresetId
或bSaveRestore
你需要显式地将指针转换回来。例如
setProperty(void *data)
{
uvcx_ucam_preset_t* p = static_cast<uvcx_ucam_preset_t*>(data);
p->bSaveRestore = ...;
p->wPresetId = ...;
}
抱歉,如果我的措辞不正确,但这是代码:
typedef struct
{
unsigned char bSaveRestore;
unsigned short wPresetId;
}
uvcx_ucam_preset_t;
...
uvcx_ucam_preset_t data;
data.wPresetId = 0;
data.bSaveRestore = 0;
setProperty(&data);
...
setProperty(void *data ...)
{
//How to access wPresetId and bSaveRestore here...
// The next line is where I'm using it.
hr = ksControl->KsProperty((PKSPROPERTY)&extProp, sizeof(extProp), data, dataLen, &bytesReturned);}
/* Here is from hsproxy.h
STDMETHOD(KsProperty)(
THIS_
_In_reads_bytes_(PropertyLength) PKSPROPERTY Property,
_In_ ULONG PropertyLength,
_Inout_updates_bytes_(DataLength) LPVOID PropertyData,
_In_ ULONG DataLength,
_Inout_opt_ ULONG* BytesReturned
*/
最终,我想弄清楚为什么我的相机在提到的线路上重新启动,而其他结构似乎没问题。我只是从数据中看不到任何东西,但如果我在通话前中断,我可以看到数据没问题。我已经尝试在调用之前创建一个变量 void *test = &data 并且我在尝试访问数据时遇到了同样的问题。
我不知道如何处理 setProperty 中的数据。来自我在调试中的尝试:
data is the address.
&data is the address of the address.
*data gives an error "expression must be a point to a complete object type"
data
是uvcx_ucam_preset_t
类型的对象,&data
returns是data
的地址,即uvcx_ucam_preset_t*
类型的指针. setProperty
将 void*
作为参数,当传递 &data
时,指针隐式转换为 void*
。
在setProperty
中,如果你想访问数据成员wPresetId
或bSaveRestore
你需要显式地将指针转换回来。例如
setProperty(void *data)
{
uvcx_ucam_preset_t* p = static_cast<uvcx_ucam_preset_t*>(data);
p->bSaveRestore = ...;
p->wPresetId = ...;
}