|
通过支持AT指令集的手机发送短消息(源代码)(8) } else { m_strCommBuffer.Empty(); } return( (DWORD)nStrLen ); } } } return( 0 ); } DWORD CGSMPhone::Submit(char *szBuffer, DWORD dwLen) { try { DWORD dwWaitRet = WaitForMultipleObjects( m_dwThreadPoolNum + 1, m_phSPIDLE, FALSE, INFINITE ); if( dwWaitRet == WAIT_OBJECT_0 + m_dwThreadPoolNum ) return( 0 ); m_pSPool[dwWaitRet].pData = new char[dwLen]; CopyMemory( m_pSPool[dwWaitRet].pData, szBuffer, dwLen ); m_pSPool[dwWaitRet].dwSize = dwLen; SetEvent( m_pSPool[dwWaitRet].hSPDeliver ); } catch( ... ) { return( 0 ); } return( dwLen ); } DWORD CGSMPhone::Deliver(char *&pData) { try { DWORD dwWaitRet = WaitForMultipleObjects( m_dwThreadPoolNum + 1, m_phDPDeliver, FALSE, m_dwTimeout * 1000 ); if( dwWaitRet == WAIT_OBJECT_0 + m_dwThreadPoolNum ) return( 0 ); if( dwWaitRet != WAIT_TIMEOUT ) { DWORD dwDataLen = m_pDPool[dwWaitRet].dwSize; pData = new char[dwDataLen + 1]; ZeroMemory( pData, dwDataLen + 1 ); CopyMemory( pData, m_pDPool[dwWaitRet].pData, dwDataLen ); delete [] m_pDPool[dwWaitRet].pData; SetEvent( m_pDPool[dwWaitRet].hDPIDLE ); return( dwDataLen ); } } catch( ... ) { return( 0 ); } return( 0 ); } void CGSMPhone::SubmitThread() { while( 1 ) { try { DWORD dwWaitRet = WaitForMultipleObjects( m_dwThreadPoolNum + 1, m_phSPDeliver, FALSE, INFINITE ); if( dwWaitRet == WAIT_OBJECT_0 + m_dwThreadPoolNum ) break;
|