void PingThread(CWlanInfoFileLogDlg* context) { ICMP_ECHO_REPLY reply; while(g_bIsAlivePingThread) { WriteFileLog(1, _T("[PING] IP : %s\r\n"), g_strPingDestIP); CString strPingResult = _T(""); if( PingTest(g_strPingDestIP, reply) == TRUE ) { if (reply.RoundTripTime < 1) { strPingResult.Format(_T("[PING] RTT<1ms, TTL=%d, Data=%dbytes\r\n"), reply.Options.Ttl, reply.DataSize); } else { strPingResult.Format(_T("[PING] RTT=%dms, TTL=%d, Data=%dbytes\r\n"), reply.RoundTripTime, reply.Options.Ttl, reply.DataSize); } } else { strPingResult.Format(_T("[PING] Request timeout.\r\n") ); } WriteFileLog(0, strPingResult.GetBuffer(strPingResult.GetLength()) ); int nLen = context->m_EditPingResult.GetWindowTextLength(); context->m_EditPingResult.SetSel(nLen, nLen); context->m_EditPingResult.ReplaceSel(strPingResult, TRUE); Sleep(1000); } }
void DriverLog::WriteLine(LPCTSTR message, ...) { if (!Active() || message == 0) return; m_cs.Enter(); static TCHAR lineStart[512]; int lineStartSize = _stprintf_s(lineStart, 512, _T("[%4d][%6d]"), ::GetCurrentThreadId(), ::GetTickCount() - startTick); WriteFileLog(lineStart, lineStartSize); va_list args; va_start( args, message ); int characters = _vsctprintf(message, args); if (characters != -1) { DynamicArray<TCHAR> buffer(characters + 5); if(-1 != _vstprintf_s(buffer, characters + 5, message, args)) { WritePipeLog(buffer, characters); buffer[characters] = _T('\r'); buffer[characters + 1] = _T('\n'); WriteFileLog(buffer, characters + 2); } } m_cs.Leave(); }
void CWlanInfoFileLogDlg::OnButtonLogStart() { // TODO: Add your control notification handler code here UpdateData(); g_bFileLogEnable = m_bIsCheckLogEn; WriteFileLog(1, _T("[WLAN Adaptor Name] : %s \r\n"), g_tszWirelessName); // for USI module // Get RoamingTrigger Setting Value if( _tcscmp(g_tszWirelessName, _T("BCMSDDHD1")) == 0 ) { CReg *regIP = new CReg(HKEY_LOCAL_MACHINE, _T("\\Comm\\BCMSDDHD1\\Parms")); TCHAR tszTriggerValue[32] = {'\0',}; regIP->ValueSZ(_T("RoamTrigger"), tszTriggerValue, 32); WriteFileLog(1, _T("[TRIGGER] tszTriggerValue : %s \r\n"), tszTriggerValue); delete regIP; } // Network Refresh Timer (Default 3sec) SetTimer(TIMER_WZC_NETWORK_REFRESH, NETWORK_REFRESH_INTERVAL, NULL); g_bIsDetecingWLInfo = TRUE; HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)APInfoThread, this, 0, NULL); CloseHandle(hThread); // Control Disable / Enable GetDlgItem(IDC_BUTTON_LOG_START)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_IPADRESS)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK_FILELOG)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_LOG_END)->EnableWindow(TRUE); GetDlgItemText(IDC_EDIT_IPADRESS, g_strPingDestIP); if(g_strPingDestIP.GetLength() > 7) // Vaild IP주소값인지 체크해야하나, 일단 지금은 대략 7자 이상만 되면 진행시작 { g_bIsAlivePingThread = TRUE; HANDLE hPingThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PingThread, this, 0, NULL); CloseHandle(hPingThread); } }
CString GetIPAddress(void) { WORD wVersionRequested = MAKEWORD(2,2); WSADATA wsaData = {0,}; char pcHostName[255] = {'\0',}; CString strIPAddress = _T(""); PHOSTENT pHostInfo = NULL; if( WSAStartup(wVersionRequested, &wsaData) == 0 ) { if( gethostname(pcHostName, sizeof(pcHostName)) == 0 ) { pHostInfo=gethostbyname(pcHostName); if( pHostInfo != NULL ) { strIPAddress=inet_ntoa(*(struct in_addr *)*pHostInfo->h_addr_list); } } WSACleanup(); } WriteFileLog(1, _T("[IPADDRESS] : %s \r\n"), strIPAddress); return strIPAddress; }
int WriteFileLogf(wstring fmt, ...) { wchar_t szBuf[2048] = L""; va_list args; va_start(args, fmt); _snwprintf_s(szBuf, 2048, 2048, fmt.data(), args); WriteFileLog(*defaultlog, wstring(szBuf)); va_end(args); return 0; }
// Ping test BOOL PingTest(LPCWSTR strIpAddr, ICMP_ECHO_REPLY& reply) { CString strIP = strIpAddr; LPWSTR addr = strIP.GetBuffer(strIP.GetLength()); CHAR cIPString[128] = {'\0',}; WideCharToMultiByte(CP_ACP, 0, addr, -1, cIPString, sizeof(cIPString), NULL, NULL); IPAddr ipaddr; WSADATA wsadata; HANDLE hIcmp; BOOL bResult = FALSE; if(strlen(cIPString)) { // start winsock, requesting min version of 1.01 WSAStartup(0x0101, &wsadata ); //******************************************************************* // Now we ping the IP address resolved above //******************************************************************* // convert the IP char string to a IPAddr representation ipaddr = inet_addr((const char*)cIPString); if(ipaddr == INADDR_NONE) { AfxMessageBox(TEXT("Invalid Host or IP Entered")); WriteFileLog(1, _T("[PING] Invalid Host or IP Entered\r\n") ); } else { INT iPacketSize = 0; // ping test을 위한 핸들 생성 hIcmp = IcmpCreateFile(); if(hIcmp == INVALID_HANDLE_VALUE) { AfxMessageBox(TEXT("Could not create ICMP handle")); WriteFileLog(1, _T("[PING] Could not create ICMP handle\r\n") ); } else { LPVOID lpData = NULL; LPVOID lpRevBuffer = NULL; // determine the size of the data packet to send iPacketSize = 32; // allocate memory for the ping function call return and packet size lpData = LocalAlloc(LPTR, iPacketSize); lpRevBuffer = LocalAlloc(LPTR, sizeof(ICMP_ECHO_REPLY) * iPacketSize); if(lpData && lpRevBuffer) { // send the ping if( NULL == IcmpSendEcho( hIcmp, ipaddr, lpData, iPacketSize, NULL, lpRevBuffer, (sizeof(ICMP_ECHO_REPLY) * iPacketSize), 1000)) { // ping test 실패 bResult = FALSE; WriteFileLog(1, _T("[PING] IcmpSendEcho Failed(%d)\r\n"), GetLastError() ); } else { // ping test 성공 //&reply = (ICMP_ECHO_REPLY*)lpRevBuffer; memcpy(&reply, lpRevBuffer, sizeof(ICMP_ECHO_REPLY)); bResult = TRUE; } } free(lpData); free(lpRevBuffer); IcmpCloseHandle(hIcmp); } } WSACleanup(); } else { WriteFileLog(1, _T("[PING] Invalid IP Address\r\n") ); } return bResult; }
void PrintWifiInfo(CWlanInfoFileLogDlg* context) { INTF_ENTRY_EX Intf; DWORD dwOutFlags; memset(&Intf, 0x00, sizeof(INTF_ENTRY_EX)); Intf.wszGuid = g_tszWirelessName; DWORD dwStatus = WZCQueryInterfaceEx(NULL, INTF_ALL, &Intf, &dwOutFlags); if (dwStatus != ERROR_SUCCESS) { RETAILMSG(1,(L"WZCQueryInterfaceEx() error 0x%08X\r\n", dwStatus)); return; } // Get Current MAC Address PRAW_DATA prdMAC = &Intf.rdBSSID; WCHAR tszMac[128] = {'\0',}; // MAC if (prdMAC->dwDataLen != 0) { swprintf(tszMac,(TEXT("%02X:%02X:%02X:%02X:%02X:%02X")), prdMAC->pData[0], prdMAC->pData[1], prdMAC->pData[2], prdMAC->pData[3], prdMAC->pData[4], prdMAC->pData[5]); } // Get Around SSID List PRAW_DATA prdBSSIDList = &Intf.rdBSSIDList; NDIS_802_11_RSSI rssi = 0; NDIS_802_11_MAC_ADDRESS APmacAddr = {0,}; NDIS_802_11_SSID ssid = {0,}; TCHAR tszSSID[256] = {'\0'}; TCHAR tszAPMAC[128] = {'\0'}; if (!(prdBSSIDList == NULL || prdBSSIDList->dwDataLen == 0)) { PWZC_802_11_CONFIG_LIST pConfigList = (PWZC_802_11_CONFIG_LIST)prdBSSIDList->pData; for (UINT i = 0; i < pConfigList->NumberOfItems; i++) { PWZC_WLAN_CONFIG pConfig = &(pConfigList->Config[i]); wsprintf(tszAPMAC, _T("%02X:%02X:%02X:%02X:%02X:%02X"), pConfig->MacAddress[0], pConfig->MacAddress[1], pConfig->MacAddress[2], pConfig->MacAddress[3], pConfig->MacAddress[4], pConfig->MacAddress[5] ); // Is same with current SSID Macaddr? if(wcscmp(tszMac, tszAPMAC) == 0) { WriteFileLog(0, "SSID : [%s] / ", pConfig->Ssid.Ssid); WriteFileLog(0, _T("[%d] / (%s) \r\n"), pConfig->Rssi, tszAPMAC); // for TCHAR SSID WCHAR tszSsid[128] = {'\0',}; for (UINT i = 0; i < pConfig->Ssid.SsidLength; i++) { tszSsid[i] = pConfig->Ssid.Ssid[i]; tszSsid[i+1] = L'\0'; } // Display Current Info SetDlgItemText(context->m_hWnd, IDC_EDIT_CUR_SSID, tszSsid); SetDlgItemInt(context->m_hWnd, IDC_EDIT_CUR_RSSI, pConfig->Rssi, TRUE); SetDlgItemText(context->m_hWnd, IDC_EDIT_CUR_MAC, tszAPMAC); } else { WriteFileLog(0, "SSID : %s / ", pConfig->Ssid.Ssid); WriteFileLog(0, _T("[%d] / (%s) \r\n"), pConfig->Rssi, tszAPMAC); } } WriteFileLog(0, _T("\r\n") ); } WZCDeleteIntfObjEx(&Intf); }