//用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;}