我正在尝试使用第三方文档中提供的功能,但我无法理解它。我最近想出了IN / OUT变量的含义以及如何使用它们。这个功能的问题在于它有几种不同的类型。我真的很困惑如何访问这些数组元素。以下是功能信息的屏幕截图。
这是我正在使用的代码:
BYTE numDevices = 10;
BYTE devices;
ULONG devicesArray = QCWWAN2kEnumerateDevices(&numDevices,&devices);
//How do I access the elements in the returned array?
ULONG是返回代码,如果它失败/为什么
答案 0 :(得分:0)
你需要获得一个调试器。目前还不清楚QCWWAN2kEnumerateDevices是否为您的设备分配内存。如果没有(我怀疑它,知道Win32API)你的
BYTE设备;
应该是
struct DEVICE_ARRAY_ELEM {
char devID[256];
char devKey[16];
};
DEVICE_ARRAY_ELEM *pDevices = malloc(sizeof(DEVICE_ARRAY_ELEM) * 10);
ULONG devicesArray = QCWWAN2kEnumerateDevices(&numDevices, (pDevices);
//Do stuff
free((void *)pDevices);
编辑___抱歉这是C,这里是C ++
struct DEVICE_ARRAY_ELEM {
char devID[256];
char devKey[16];
};
DEVICE_ARRAY_ELEM *pDevices = new DEVICE_ARRAY_ELEM[10];
ULONG devicesArray = QCWWAN2kEnumerateDevices(&numDevices, pDevices);
//do stuff
delete [] pDevices;
访问使用:
pDevices[devnum].devID[IDIndex];
答案 1 :(得分:0)
改进John Silver的回答
// IN A HEADER:
typedef struct DEVICE_ARRAY_ELEM {
char devID[256];
char devKey[16];
} DEVICE_ARRAY_ELEM; // This defines a struct to hold the data brought back
// it also type defs 'struct DEVICE_ARRAY_ELEM' to 'DEVICE_ARRAY_ELEM' for convienence
// IN YOUR CODE:
// This pointer should be wrapped in a auto_ptr to help with RAII
DEVICE_ARRAY_ELEM *pDevices = new DEVICE_ARRAY_ELEM[10]; // allocate 10 elements in-line
ULONG errorCode = QCWWAN2kEnumerateDevices(&numDevices, (BYTE*)pDevices); // get them
// Here is the hard part: iterating over the array of devices returned
// as per the spec numDevices is now the number of devices parsed
for(int i = 0; i < numDevices; i++) {
printf("%s\n", pDevices[i].devID); // is the name of the device (a character array)
}
delete [] pDevices;
我现在使用numDevices
迭代数组,因为规范说这是函数调用后枚举的设备数
以下是根据我的假设运作的代码:IDEONE
代码中有一些typedef
以及我认为QCWWAN2kEnumerateDevices
运作的定义。所以应该忽略这些,但代码编译并按预期执行