//用lineGetID获得Modem的设备ID
LONG mylineGetWaveID (DWORD dwSelect, LPSTR waveDev)
{
DWORD dwWaveDev;
VARSTRING *vs;
LONG lrc;
DWORD dwSize; // allocate memory for structure
vs = (VARSTRING *) calloc (1, sizeof(VARSTRING));
// set structure size
vs->dwTotalSize = sizeof(VARSTRING);
do {
// get information into structure
if (dwSelect == LINECALLSELECT_LINE)
lrc = lineGetID(mytapi.hLine, 0L, NULL, dwSelect, vs, waveDev);
if (dwSelect == LINECALLSELECT_CALL)
lrc = lineGetID(mytapi.hLine, 0L, mytapi.hCall, dwSelect, vs, waveDev);
// bomb out if error
if (lrc) {
free (vs);
return -1;
}
// reallocate and try again
if (vs->dwTotalSize < vs->dwNeededSize) {
dwSize = vs->dwNeededSize;
free (vs);
vs = (VARSTRING *) calloc(1, dwSize);
vs->dwTotalSize = dwSize;
continue;
} /* end if (need more space) */
break; /* success */
} while (TRUE); // copy wave id
dwWaveDev = (DWORD) *((DWORD *)((LPSTR)vs + vs->dwStringOffset));
free (vs);
return dwWaveDev;}
LONG mylineGetWaveID (DWORD dwSelect, LPSTR waveDev)
{
DWORD dwWaveDev;
VARSTRING *vs;
LONG lrc;
DWORD dwSize; // allocate memory for structure
vs = (VARSTRING *) calloc (1, sizeof(VARSTRING));
// set structure size
vs->dwTotalSize = sizeof(VARSTRING);
do {
// get information into structure
if (dwSelect == LINECALLSELECT_LINE)
lrc = lineGetID(mytapi.hLine, 0L, NULL, dwSelect, vs, waveDev);
if (dwSelect == LINECALLSELECT_CALL)
lrc = lineGetID(mytapi.hLine, 0L, mytapi.hCall, dwSelect, vs, waveDev);
// bomb out if error
if (lrc) {
free (vs);
return -1;
}
// reallocate and try again
if (vs->dwTotalSize < vs->dwNeededSize) {
dwSize = vs->dwNeededSize;
free (vs);
vs = (VARSTRING *) calloc(1, dwSize);
vs->dwTotalSize = dwSize;
continue;
} /* end if (need more space) */
break; /* success */
} while (TRUE); // copy wave id
dwWaveDev = (DWORD) *((DWORD *)((LPSTR)vs + vs->dwStringOffset));
free (vs);
return dwWaveDev;}
我在试你先前写的那段VB代码。