BOOL HttpRequest(HTTPREQ* req, const wchar_t* url, const wchar_t* header, DWORD header_length, const char* body, DWORD body_length) { BOOL ret = FALSE; req->internet = WinHttpOpen(NULL, NULL, NULL, NULL, NULL); if (req->internet != NULL) { URL_COMPONENTS urlinfo = {0}; urlinfo.dwStructSize = sizeof(URL_COMPONENTS); urlinfo.dwSchemeLength = (DWORD)-1; urlinfo.dwUserNameLength = (DWORD)-1; urlinfo.dwHostNameLength = (DWORD)-1; urlinfo.dwUrlPathLength = (DWORD)-1; urlinfo.dwExtraInfoLength = (DWORD)-1; urlinfo.dwPasswordLength = (DWORD)-1; if (WinHttpCrackUrl(url, wcslen(url), 0, &urlinfo)) { if (WinHttpSetTimeouts(req->internet, req->resolveTimeout, req->connectTimeout, req->sendTimeout, req->receiveTimeout)) { TCHAR* host = new TCHAR[urlinfo.dwHostNameLength + 1]; wmemset(host, 0, urlinfo.dwHostNameLength + 1); StrCpyN(host, urlinfo.lpszHostName, urlinfo.dwHostNameLength + 1); req->connect = WinHttpConnect(req->internet, host, urlinfo.nPort, 0); if (req->connect != NULL) { if (body == NULL || body_length == 0) req->request = WinHttpOpenRequest(req->connect, L"GET", urlinfo.lpszUrlPath, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0); else req->request = WinHttpOpenRequest(req->connect, L"POST", urlinfo.lpszUrlPath, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0); if (req->request != NULL) { if (WinHttpSendRequest(req->request, header, header_length, (void*)body, body_length, body_length, 0) && WinHttpReceiveResponse(req->request, 0)) { TCHAR status[16] = {0}; DWORD size = sizeof(status); if (WinHttpQueryHeaders(req->request, WINHTTP_QUERY_STATUS_CODE, NULL, status, &size, 0)) { if (StrCmp(status, L"200") == 0) { char buffer[4096] = {0}; DWORD length = 0; while (TRUE) { if (WinHttpReadData(req->request, buffer, sizeof(buffer), &length) && length > 0) { AppendBuffer(&req->buffer, req->dataLength, req->bufferLength, buffer, length); length = 0; } else break; } ret = TRUE; } } } } } SAFE_DELETE_ARRAY(host); } } } return ret; }
void CZProfileAdvanceDialog::GetConfig(ZProfileDraw::_ZAdvance* pAdvance) { CZDwgDrawConfig* pDrawConfig = CZDwgDrawConfig::GetInstance(); StrCpyN(m_oAdvance.pGroundLinePen, m_pDrawPen[m_nGroundPen - 1].listString, min(_countof(m_oAdvance.pGroundLinePen), strlen(m_pDrawPen[m_nGroundPen - 1].listString) + 1)); StrCpyN(m_oAdvance.pDesignLinePen, m_pDrawPen[m_nDesignPen - 1].listString, min(_countof(m_oAdvance.pDesignLinePen), strlen(m_pDrawPen[m_nDesignPen - 1].listString) + 1)); StrCpyN(m_oAdvance.pRoadPen, m_pDrawPen[m_nRoadPen - 1].listString, min(_countof(m_oAdvance.pRoadPen), strlen(m_pDrawPen[m_nRoadPen - 1].listString) + 1)); StrCpyN(m_oAdvance.pLandPen, m_pDrawPen[m_nLandPen - 1].listString, min(_countof(m_oAdvance.pLandPen), strlen(m_pDrawPen[m_nLandPen - 1].listString) + 1)); StrCpyN(m_oAdvance.pDataPen, m_pDrawPen[m_nDataPen - 1].listString, min(_countof(m_oAdvance.pDataPen), strlen(m_pDrawPen[m_nDataPen - 1].listString) + 1)); if(pAdvance != NULL) memcpy(pAdvance, &m_oAdvance, sizeof(m_oAdvance)); }
//////////////////////////////////////////////////////////////////////////////////// // LoadINIInfo() // Load the input/output/configurable lines data and the number of ports supported // by the device //////////////////////////////////////////////////////////////////////////////////// HRESULT CadvantechDio::LoadINIInfo() { char demoName1[15]; char demoName2[15]; char fname[512]; // NOTE: We expect the INI file to be in the same directory as the application, // namely, this DLL. It's the only way to find the file if it's not // in the windows subdirectory if (GetModuleFileName(_Module.GetModuleInstance(), fname, 512)==0) return E_FAIL; // replace .dll with .ini strrchr(fname, '.' )[1]='\0'; strcat(fname,"ini"); // create a key to search on - The Device Name. strcpy(demoName2,"Advantech DEMO"); StrCpyN(demoName1, m_deviceName, 15); if (!StrCmp(demoName1, demoName2)) // if demo board... { return E_DEMOBOARD; } else // if installed board... { // replace .dll with .ini strrchr(fname, '.' )[1]='\0'; strcat(fname,"ini"); // create a key to search on - The Device Name. char *ch = strchr(m_deviceName,' '); int spaceAddress = ch - m_deviceName + 1; StrCpyN(m_deviceName, m_deviceName, spaceAddress); } // Geck 225768: Check to see if this board is supported at all (i.e. in the INI file) if(!isBoardinINIFile(m_deviceName,fname)) return Error(E_BOARDNOTSUPPORTED); m_configLines = GetPrivateProfileInt(m_deviceName, "DIOConfigWidth", 0, fname); m_inputLines = GetPrivateProfileInt(m_deviceName, "DIOInputWidth", 0, fname); m_outputLines = GetPrivateProfileInt(m_deviceName, "DIOOutputWidth", 0, fname); m_ports = GetPrivateProfileInt(m_deviceName, "DIOPorts", 0, fname); // Geck 224997: Error message for Advantech DAT object constructors should be enhanced if(m_ports == 0) return Error(E_SUBSYSTEMNOTSUPPORTED); return S_OK; } // end of LoadINIInfo()
U32 CDeviceMgr_i::SetIP(LPCTSTR pszAdapterName, LPCTSTR pszIPAddress, LPCTSTR pszNetMask ) { BOOL bRet = TRUE; HKEY hKey; CString strKeyName = _T("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\"); strKeyName += pszAdapterName; if ( ERROR_SUCCESS != RegOpenKeyEx( HKEY_LOCAL_MACHINE, strKeyName, 0, KEY_WRITE, &hKey ) ) { TRACE( _T("\nRegOpenKeyEx failed\n") ); return FALSE; } const int MAX_SIZE = 100; TCHAR mszIPAddress[ MAX_SIZE ]; TCHAR mszNetMask[ MAX_SIZE ]; StrCpyN( mszIPAddress, pszIPAddress, MAX_SIZE); StrCpyN( mszNetMask, pszNetMask, MAX_SIZE); mszIPAddress[MAX_SIZE-1] = 0; mszNetMask[MAX_SIZE-1] = 0; int nIP = 0, nMask = 0; nIP = lstrlen( mszIPAddress ); nMask = lstrlen( mszNetMask ); *( mszIPAddress + nIP + 1 ) = 0x00; // REG_MULTI_SZ数据需要在后面再加个0 nIP += 2; *( mszNetMask + nMask + 1 ) = 0x00; nMask += 2; nIP = nIP * sizeof( TCHAR ); nMask = nMask * sizeof( TCHAR ); if ( ERROR_SUCCESS != RegSetValueEx( hKey, _T("IPAddress"), 0, REG_MULTI_SZ, ( unsigned char* )mszIPAddress, nIP ) ) { bRet = FALSE; } if ( ERROR_SUCCESS != RegSetValueEx( hKey, _T("SubnetMask"), 0, REG_MULTI_SZ, ( unsigned char* )mszNetMask, nMask ) ) { bRet = FALSE; } RegCloseKey( hKey ); return bRet; }
BOOL FillIpAddr(TCHAR * buff, SOCKET_ADDRESS& Address, int i, CDeviceMgr_i::IPADDR IpAddr[10] ) { DWORD bufflen = 256; buff[0] = 0; WSAAddressToString(Address.lpSockaddr, Address.iSockaddrLength, NULL, buff,&bufflen); if(i<10) { StrCpyN(IpAddr[i].szAddr, buff, MAX_IP_ADDR_CNT); IpAddr[i].sa_family = Address.lpSockaddr->sa_family; if(Address.lpSockaddr->sa_family == AF_INET) { IpAddr[i].IsIpV6 = 0; } else if(Address.lpSockaddr->sa_family == AF_INET6) { IpAddr[i].IsIpV6 = 1; } } else { return FALSE; } return TRUE; }
inline void CGuildCtrl::Decoder_Summary_Res(void) { int GuildIdx=MSG_ReadShort(); std::map< int, struct tagSummaryRecord>::iterator itor = m_SummaryRecordMap.find(GuildIdx); if(itor == m_SummaryRecordMap.end()) return; StrCpyN((itor->second).Name,MSG_ReadString(),GUILDNAMESTRING); (itor->second).Name[GUILDNAMESTRING]=NULL; (itor->second).Mark.bActive=TRUE; (itor->second).Mark.ChangeCnt = MSG_ReadLong(); unsigned char MarkImage[GUILDMARKSIZE]; for(int i=0; i < GUILDMARKSIZE; i++) MarkImage[i]=MSG_ReadByte(); (itor->second).Sync.bComplete=TRUE; if(false == g_ifMng->m_guildMarkMng->INSERTorCHANGE_PactMarks(GuildIdx,MarkImage)){ OutputDebugString("error"); } if(false == g_ifMng->m_guildMarkMng->UpdateGuildTexture()){ OutputDebugString("error"); } }
void CZProfilePageDialog::GetConfig(char* lpOutFile, short nOutFileMaxLength, bool& bDefaultOpen, ZProfilePageDraw* pDrawConfig) { if(lpOutFile != NULL) StrCpyN(lpOutFile, m_pOutFile, min(nOutFileMaxLength, strlen(m_pOutFile) + 1)); if(pDrawConfig != NULL) memcpy(pDrawConfig, &m_oDraw, sizeof(m_oDraw)); bDefaultOpen = (bool)m_bDefaultOpen; }
static void GetDefaultFont(HDC hDc, LOGFONT &lf ) { // Check for font existance: if (::EnumFontFamilies (hDc, NULL, FontFamalyProcFonts, (LPARAM)(LPCTSTR) g_pszOffice2007FontName) == 0) { // Found. StrCpyN(lf.lfFaceName, g_pszOffice2007FontName, LF_FACESIZE); lf.lfQuality = 5; // CLEARTYPE_QUALITY } else if (::EnumFontFamilies (hDc, NULL, FontFamalyProcFonts, (LPARAM)(LPCTSTR) g_pszOfficeFontName) == 0) { // Found. StrCpyN(lf.lfFaceName, g_pszOfficeFontName, LF_FACESIZE); lf.lfQuality = 5; // CLEARTYPE_QUALITY } }
LRESULT DataGridControl::onGetDispInfo(int wParam, LPNMHDR lParam, BOOL &bHandled) { NMLVDISPINFO *pdi = (NMLVDISPINFO*)lParam; if (pdi->item.mask & LVIF_TEXT) { std::tstring text = m_model->getItemProperty(pdi->item.iItem, pdi->item.iSubItem); StrCpyN(pdi->item.pszText, text.c_str(), min((int)(text.length()) + 1, pdi->item.cchTextMax)); } return 0; }
void CYMcCurvePage2::OnBnClickedButton4() { char dllf[256],s[256],myename[17],mycname[33]; HINSTANCE hmydll; sprintf(dllf,YC_FINDDOTDLLNAME); hmydll=LoadLibrary(dllf); if (hmydll==NULL) { sprintf(s,"%s 调入失败!",dllf); AfxMessageBox(s); return; } ShowFindDotDlg * pf; pf=(ShowFindDotDlg *)::GetProcAddress(hmydll,"ShowFindDotDlg"); if (pf==NULL) { sprintf(s,"%s 调入函数ShowFindDotDlg 失败!",dllf); AfxMessageBox(s); FreeLibrary(hmydll); hmydll=NULL; return; } CWnd * pp=this->GetParent(); BYTE dotkind=0; dotkind = 3 ; if ((*pf)(dotkind,myename,mycname)) { UpdateData(true); m_ename=myename; char tempchar[9] ; StrCpyN(tempchar ,mycname ,9) ; m_cname = tempchar ; UpdateData(false); } FreeLibrary(hmydll); }
LRESULT MFTreeView::OnGetDispInfo(int, LPNMHDR lParam, BOOL&) { LPNMTVDISPINFO lptvdi = (LPNMTVDISPINFO) lParam; MFTreeViewItem* pItem = (MFTreeViewItem*)(lptvdi->item.lParam); if (pItem) { if (lptvdi->item.mask & TVIF_CHILDREN) { lptvdi->item.cChildren = pItem->HasChildren() ? 1 : 0; } if (lptvdi->item.mask & TVIF_IMAGE) { } if (lptvdi->item.mask & TVIF_SELECTEDIMAGE) { } if (lptvdi->item.mask & TVIF_TEXT) { StrCpyN(lptvdi->item.pszText, pItem->GetLabel().c_str(), lptvdi->item.cchTextMax); } } return 0; }
// If pszFaceName is an empty string, GDI uses the first font that matches the other specified attributes. static HFONT CreatFont_i(LPCTSTR pszFaceName, INT32 nFontSize, BOOL bBold, BOOL bItalic) { HFONT hFont = NULL; LOGFONT lf; HDC hDc = ::GetDC(NULL); memset (&lf, 0, sizeof (LOGFONT)); lf.lfHeight = -MulDiv(nFontSize, GetDeviceCaps(hDc, LOGPIXELSY), 72); lf.lfCharSet = DEFAULT_CHARSET; lf.lfQuality = 5; // CLEARTYPE_QUALITY; lf.lfWeight = bBold?FW_BOLD:FW_REGULAR; lf.lfItalic = bItalic?TRUE:FALSE; if (pszFaceName == NULL) { GetDefaultFont(hDc, lf); } else { if (::EnumFontFamilies (hDc, NULL, FontFamalyProcFonts, (LPARAM)(LPCTSTR) pszFaceName) == 0) { // Found. StrCpyN(lf.lfFaceName, pszFaceName, LF_FACESIZE); lf.lfQuality = 5; // CLEARTYPE_QUALITY } else { GetDefaultFont(hDc, lf); } } hFont = CreateFontIndirect(&lf); return hFont; }
static void test_StrXXX_overflows(void) { CHAR str1[2*MAX_PATH+1], buf[2*MAX_PATH]; WCHAR wstr1[2*MAX_PATH+1], wbuf[2*MAX_PATH]; const WCHAR fmt[] = {'%','s',0}; STRRET strret; int ret; int i; for (i=0; i<2*MAX_PATH; i++) { str1[i] = '0'+(i%10); wstr1[i] = '0'+(i%10); } str1[2*MAX_PATH] = 0; wstr1[2*MAX_PATH] = 0; memset(buf, 0xbf, sizeof(buf)); expect_eq(StrCpyNA(buf, str1, 10), buf, PCHAR, "%p"); expect_eq(buf[9], 0, CHAR, "%x"); expect_eq(buf[10], '\xbf', CHAR, "%x"); if (pStrCatBuffA) { expect_eq(pStrCatBuffA(buf, str1, 100), buf, PCHAR, "%p"); expect_eq(buf[99], 0, CHAR, "%x"); expect_eq(buf[100], '\xbf', CHAR, "%x"); } else win_skip("StrCatBuffA() is not available\n"); if (0) { /* crashes on XP */ StrCpyNW(wbuf, (LPCWSTR)0x1, 10); StrCpyNW((LPWSTR)0x1, wstr1, 10); } memset(wbuf, 0xbf, sizeof(wbuf)); expect_eq(StrCpyNW(wbuf, (LPCWSTR)0x1, 1), wbuf, PWCHAR, "%p"); expect_eq(wbuf[0], 0, WCHAR, "%x"); expect_eq(wbuf[1], (WCHAR)0xbfbf, WCHAR, "%x"); memset(wbuf, 0xbf, sizeof(wbuf)); expect_eq(StrCpyNW(wbuf, 0, 10), wbuf, PWCHAR, "%p"); expect_eq(wbuf[0], 0, WCHAR, "%x"); expect_eq(wbuf[1], (WCHAR)0xbfbf, WCHAR, "%x"); memset(wbuf, 0xbf, sizeof(wbuf)); expect_eq(StrCpyNW(wbuf, 0, 0), wbuf, PWCHAR, "%p"); expect_eq(wbuf[0], (WCHAR)0xbfbf, WCHAR, "%x"); expect_eq(wbuf[1], (WCHAR)0xbfbf, WCHAR, "%x"); memset(wbuf, 0xbf, sizeof(wbuf)); expect_eq(StrCpyNW(wbuf, wstr1, 0), wbuf, PWCHAR, "%p"); expect_eq(wbuf[0], (WCHAR)0xbfbf, WCHAR, "%x"); expect_eq(wbuf[1], (WCHAR)0xbfbf, WCHAR, "%x"); memset(wbuf, 0xbf, sizeof(wbuf)); expect_eq(StrCpyNW(wbuf, wstr1, 10), wbuf, PWCHAR, "%p"); expect_eq(wbuf[9], 0, WCHAR, "%x"); expect_eq(wbuf[10], (WCHAR)0xbfbf, WCHAR, "%x"); if (pStrCatBuffW) { expect_eq(pStrCatBuffW(wbuf, wstr1, 100), wbuf, PWCHAR, "%p"); expect_eq(wbuf[99], 0, WCHAR, "%x"); expect_eq(wbuf[100], (WCHAR)0xbfbf, WCHAR, "%x"); } else win_skip("StrCatBuffW() is not available\n"); if (pStrRetToBufW) { memset(wbuf, 0xbf, sizeof(wbuf)); strret.uType = STRRET_WSTR; U(strret).pOleStr = StrDupW(wstr1); expect_eq2(pStrRetToBufW(&strret, NULL, wbuf, 10), S_OK, HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) /* Vista */, HRESULT, "%x"); expect_eq(wbuf[9], 0, WCHAR, "%x"); expect_eq(wbuf[10], (WCHAR)0xbfbf, WCHAR, "%x"); } else win_skip("StrRetToBufW() is not available\n"); if (pStrRetToBufA) { memset(buf, 0xbf, sizeof(buf)); strret.uType = STRRET_CSTR; StrCpyN(U(strret).cStr, str1, MAX_PATH); expect_eq2(pStrRetToBufA(&strret, NULL, buf, 10), S_OK, HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) /* Vista */, HRESULT, "%x"); expect_eq(buf[9], 0, CHAR, "%x"); expect_eq(buf[10], (CHAR)0xbf, CHAR, "%x"); } else win_skip("StrRetToBufA() is not available\n"); if (pwnsprintfA) { memset(buf, 0xbf, sizeof(buf)); ret = pwnsprintfA(buf, 10, "%s", str1); ok(broken(ret == 9) || ret == -1 /* Vista */, "Unexpected wnsprintfA return %d, expected 9 or -1\n", ret); expect_eq(buf[9], 0, CHAR, "%x"); expect_eq(buf[10], (CHAR)0xbf, CHAR, "%x"); } else win_skip("wnsprintfA() is not available\n"); if (pwnsprintfW) { memset(wbuf, 0xbf, sizeof(wbuf)); ret = pwnsprintfW(wbuf, 10, fmt, wstr1); ok(broken(ret == 9) || ret == -1 /* Vista */, "Unexpected wnsprintfW return %d, expected 9 or -1\n", ret); expect_eq(wbuf[9], 0, WCHAR, "%x"); expect_eq(wbuf[10], (WCHAR)0xbfbf, WCHAR, "%x"); } else win_skip("wnsprintfW() is not available\n"); }
Int16u FNSplit (const char * pathP, char * driveP, char * dirP, char * nameP, char * extP) { Int16u Ret; //Set all string to default value zero Ret = 0; if (driveP) *driveP = 0; if (dirP) *dirP = 0; if (nameP) *nameP = 0; if (extP) *extP = 0; if (pathP == 0) return 0; const char * cursor = pathP, * dirStart = 0, * lastSlash = 0; // if (StartsWithAnsi (cursor) && _istalpha (*cursor) && if (StartsWithAnsi (cursor) && isAlpha (*cursor) && StartsWithAnsiChar (cursor + 1, ':')) { // A drive letter presents. if (driveP != 0) StrCpyN (driveP, cursor, MAXDRIVE); cursor += 2; Ret |= DRIVE; } dirStart = cursor; // now find the last slash while (*cursor != '\0') { if (StartsWithAnsiChar (cursor, '/') || StartsWithAnsiChar (cursor, '\\')) lastSlash = cursor; cursor = AnsiNext (cursor); } if (lastSlash != 0) { // a slash was seen if (dirP != 0) { Int16u bytesToCopy = lastSlash - dirStart + 1 // for '/' + 1; // for '\0' if (bytesToCopy > MAXDIR) bytesToCopy = MAXDIR; StrCpyN (dirP, dirStart, bytesToCopy); } cursor = lastSlash + 1; Ret |= DIRECTORY; } else cursor = dirStart; // cursor now points to the start of the filename // check for wildcards if (AnsiStrChr (cursor, '*') != 0 || AnsiStrChr (cursor, '?') != 0) Ret |= WILDCARDS; // now see if there's an extension const char * period = 0; for (const char * ptr = cursor; *ptr != '\0'; ptr = AnsiNext (ptr)) { if (StartsWithAnsiChar (ptr, '.')) period = ptr; } if (period != 0) { Int16u bytesToCopy = period - cursor + 1; // for '\0' if (bytesToCopy > MAXFILE) bytesToCopy = MAXFILE; if (bytesToCopy > 0) { if (nameP != 0) StrCpyN (nameP, cursor, bytesToCopy); Ret |= FILENAME; } if (extP != 0) StrCpyN (extP, period, MAXEXT); Ret |= EXTENSION; } else { if (*cursor != '\0') { if (nameP != 0) StrCpyN (nameP, cursor, MAXFILE); Ret |= FILENAME; } } #if defined (DEBUG_FNSPLIT) static char buffer [MAXPATH + MAXPATH + 32]; wsprintf (buffer, "pathP:[%s] driveP:[%s] dirP:[%s] nameP:[%s] extP:[%s]", pathP, driveP != NULL ? driveP : "<NULL>", dirP != NULL ? dirP : "<NULL>", nameP != NULL ? nameP : "<NULL>", extP != NULL ? extP : "<NULL>"); MessageBox (GetActiveWindow (), buffer, "FNSplit", MB_OK); #endif //(DEBUG_FNSPLIT) return Ret; }
__forceinline UINT WINAPI EntryMain( UINT argc, PTSTR *argv, PBUFFER pBuffer ) { UINT uRetCode = 1; HKEY hKey = NULL; if (argc != 3 || (StrCmpI(argv[1], TEXT("pre")) && StrCmpI(argv[1], TEXT("post"))) || argv[2][0] == 0) { MessageBox( NULL, TEXT("Usage:\naddpath pre \"path\"\naddpath post \"path\""), TEXT("Usage Error"), MB_OK | MB_ICONWARNING ); return(~0); } if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGSTR_ENV, 0, KEY_QUERY_VALUE | KEY_SET_VALUE, &hKey) == ERROR_SUCCESS && hKey != NULL ) { DWORD cbBuffer = sizeof(pBuffer->szOld); DWORD dwType; StrCpyN(pBuffer->szNew, argv[2], CCHMAX_BUFFER); if ( RegQueryValueEx(hKey, TEXT("Path"), NULL, &dwType, (PBYTE)pBuffer->szOld, &cbBuffer) == ERROR_SUCCESS && cbBuffer >= 2 && (dwType == REG_SZ || dwType == REG_EXPAND_SZ) && StrStrI(PrepPath(pBuffer->szOld), PrepPath(pBuffer->szNew)) == NULL ) { PTSTR pszHead, pszTail; if (StrCmpI(argv[1], TEXT("pre")) == 0) { pszHead = pBuffer->szNew; pszTail = pBuffer->szOld; } else { pszHead = pBuffer->szOld; pszTail = pBuffer->szNew; } StrCatBuff(pszHead, pszTail, CCHMAX_BUFFER); StrTrim(pszHead, TEXT(";")); cbBuffer = (lstrlen(pszHead) + 1) * sizeof(TCHAR); if (RegSetValueEx(hKey, TEXT("Path"), 0, dwType, (PBYTE)pszHead, cbBuffer) == ERROR_SUCCESS) { SendMessageTimeout( HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)TEXT("Environment"), SMTO_ABORTIFHUNG, 5000, NULL ); uRetCode = 0; } else { uRetCode = 2; } } RegCloseKey(hKey); } return(uRetCode); }
/** * FsGetDefRootName is called only when the plugin is installed. * It asks the plugin for the default root name which should appear in the Network Neighborhood. */ void __stdcall FsGetDefRootName(char *DefRootName, int maxlen) { StrCpyN(DefRootName, PLUGIN_LABEL, (sizeof(PLUGIN_LABEL) < maxlen) ? (sizeof(PLUGIN_LABEL)): (maxlen)); }
CZProfilePageDialog::CZProfilePageDialog() : CCard1Dialog(0x0030, "IDD_DIALOG_PROFILEPAGE") { ZeroMemory(m_pAxesBuff, sizeof(m_pAxesBuff)); ZeroMemory(m_pPaperSize, sizeof(m_pPaperSize)); ZeroMemory(m_pColumn, sizeof(m_pColumn)); InitConfig(); char szTempFile[MAX_PATH]; sprintf(szTempFile, "%s\\profilepageconfig.tmp", g_strCurrentWorkPath); ifstream in; in.open(szTempFile); if(in.is_open()) { char szText[1024], szName[MAX_PATH], szValue[1024]; while(1) { in.getline(szText, _countof(szText)); if(in.fail()) break; if(GetValueFromString(szText, szName, szValue)) { if(StrCmp(szName, "nAxesNo") == 0) m_oDraw.nAxesNo = atoi(szValue); else if(StrCmp(szName, "fStartStat") == 0) m_oDraw.fStartStat = atof(szValue); else if(StrCmp(szName, "fEndStat") == 0) m_oDraw.fEndStat = atof(szValue); else if(StrCmp(szName, "bDiscLabel") == 0) m_oDraw.bDiscLabel = atoi(szValue); else if(StrCmp(szName, "bMultiAxes") == 0) m_oDraw.bMultiAxes = atoi(szValue); else if(StrCmp(szName, "bAuxlineDim") == 0) m_oDraw.bAuxlineDim = atoi(szValue); else if(StrCmp(szName, "strStatPrefix") == 0) StrCpyN(m_oDraw.strStatPrefix, szValue, min(_countof(m_oDraw.strStatPrefix), strlen(szValue) + 1)); else if(StrCmp(szName, "bGrid") == 0) m_oDraw.bGrid = atoi(szValue); else if(StrCmp(szName, "nGridWidth") == 0) m_oDraw.nGridWidth = atoi(szValue); else if(StrCmp(szName, "nGridHeight") == 0) m_oDraw.nGridHeight = atoi(szValue); else if(StrCmp(szName, "fXDimOffset") == 0) m_oDraw.fXDimOffset = atof(szValue); else if(StrCmp(szName, "fYDimOffset") == 0) m_oDraw.fYDimOffset = atof(szValue); else if(StrCmp(szName, "nMinSpan") == 0) m_oDraw.nMinSpan = atoi(szValue); else if(StrCmp(szName, "nMianQueDim") == 0) m_oDraw.nMianQueDim = atoi(szValue); else if(StrCmp(szName, "bPage") == 0) m_oDraw.bPage = atoi(szValue); else if(StrCmp(szName, "nStartPageNo") == 0) m_oDraw.nStartPageNo = atoi(szValue); else if(StrCmp(szName, "nPages") == 0) m_oDraw.nPages = atoi(szValue); else if(StrCmp(szName, "pFrameName") == 0) StrCpyN(m_oDraw.pFrameName, szValue, min(_countof(m_oDraw.pFrameName), strlen(szValue) + 1)); else if(StrCmp(szName, "pPaperSize") == 0) StrCpyN(m_oDraw.pPaperSize, szValue, min(_countof(m_oDraw.pPaperSize), strlen(szValue) + 1)); else if(StrCmp(szName, "nRatio") == 0) m_oDraw.nRatio = atoi(szValue); else if(StrCmp(szName, "nColumn") == 0) m_oDraw.nColumn = atoi(szValue); else if(StrCmp(szName, "bGroundLine") == 0) m_oDraw.advance.bGroundLine = atoi(szValue); else if(StrCmp(szName, "pGroundLinePen") == 0) StrCpyN(m_oDraw.advance.pGroundLinePen, szValue, min(_countof(m_oDraw.advance.pGroundLinePen), strlen(szValue) + 1)); else if(StrCmp(szName, "bDimGroundHeight") == 0) m_oDraw.advance.bDimGroundHeight = atoi(szValue); else if(StrCmp(szName, "bDesignLine") == 0) m_oDraw.advance.bDesignLine = atoi(szValue); else if(StrCmp(szName, "pDesignLinePen") == 0) StrCpyN(m_oDraw.advance.pDesignLinePen, szValue, min(_countof(m_oDraw.advance.pDesignLinePen), strlen(szValue) + 1)); else if(StrCmp(szName, "bDimDesignHeight") == 0) m_oDraw.advance.bDimDesignHeight = atoi(szValue); else if(StrCmp(szName, "bBridge") == 0) m_oDraw.advance.bBridge = atoi(szValue); else if(StrCmp(szName, "bTunnel") == 0) m_oDraw.advance.bTunnel = atoi(szValue); else if(StrCmp(szName, "bQue") == 0) m_oDraw.advance.bQue = atoi(szValue); else if(StrCmp(szName, "bGroove") == 0) m_oDraw.advance.bGroove = atoi(szValue); else if(StrCmp(szName, "bSideDitch") == 0) m_oDraw.advance.bSideDitch = atoi(szValue); else if(StrCmp(szName, "bRoad") == 0) m_oDraw.advance.bRoad = atoi(szValue); else if(StrCmp(szName, "pRoadPen") == 0) StrCpyN(m_oDraw.advance.pRoadPen, szValue, min(_countof(m_oDraw.advance.pRoadPen), strlen(szValue) + 1)); else if(StrCmp(szName, "bLand") == 0) m_oDraw.advance.bLand = atoi(szValue); else if(StrCmp(szName, "pLandPen") == 0) StrCpyN(m_oDraw.advance.pLandPen, szValue, min(_countof(m_oDraw.advance.pLandPen), strlen(szValue) + 1)); else if(StrCmp(szName, "fSteleHeight") == 0) m_oDraw.advance.fSteleHeight = atof(szValue); else if(StrCmp(szName, "bData") == 0) m_oDraw.advance.bData = atoi(szValue); else if(StrCmp(szName, "pDataPen") == 0) StrCpyN(m_oDraw.advance.pDataPen, szValue, min(_countof(m_oDraw.advance.pDataPen), strlen(szValue) + 1)); else if(StrCmp(szName, "nDataDimStyle") == 0) m_oDraw.advance.nDataDimStyle = atoi(szValue); else if(StrCmp(szName, "bClearLine") == 0) m_oDraw.advance.bClearLine = atoi(szValue); else if(StrCmp(szName, "bCutStepLine") == 0) m_oDraw.advance.bCutStepLine = atoi(szValue); else if(StrCmp(szName, "bCrownDitch") == 0) m_oDraw.advance.bCrownDitch = atoi(szValue); else if(StrCmp(szName, "pOutFile") == 0) StrCpyN(m_pOutFile, szValue, min(_countof(m_pOutFile), strlen(szValue) + 1)); else if(StrCmp(szName, "bDefaultOpen") == 0) m_bDefaultOpen = (bool)atoi(szValue); } } in.close(); } // HANDLE hFile = CreateFile(szTempFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // if(hFile != NULL) // { // unsigned long dwLength = sizeof(m_oDraw); // char* p = new char[dwLength]; // ReadFile(hFile, p, dwLength, &dwLength, NULL); // if(dwLength == sizeof(m_oDraw)) // memcpy(&m_oDraw, p, dwLength); // delete [] p; // CloseHandle(hFile); // } }
U32 CDeviceMgr_i::SetMAC(LPCTSTR pszAdapterName, LPCTSTR pszMACAddress) { U32 ret = ERR_OK_I; BOOL bRet = FALSE; HKEY hKey; CString strKeyName = _T("SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\"); if ( ERROR_SUCCESS != RegOpenKeyEx( HKEY_LOCAL_MACHINE, strKeyName, 0, KEY_WRITE | KEY_READ, &hKey ) ) { TRACE( _T("\nRegOpenKeyEx failed.\n") ); return FALSE; } const int BUFSIZE = 255; TCHAR szSubKeyName[ BUFSIZE ]; DWORD dwIndex = 0, dwSubKeyName = BUFSIZE; FILETIME fileTime; while ( ERROR_SUCCESS == RegEnumKeyEx( hKey, dwIndex, szSubKeyName, &dwSubKeyName, NULL, NULL, NULL, &fileTime ) ) { dwIndex ++; dwSubKeyName = BUFSIZE; HKEY hSubKey; CString strSubKeyName; strSubKeyName = strKeyName + CString( szSubKeyName ) + _T("\\"); if ( ERROR_SUCCESS != RegOpenKeyEx( HKEY_LOCAL_MACHINE, strSubKeyName, 0, KEY_WRITE | KEY_READ, &hSubKey ) ) { continue; } TCHAR szValue[ BUFSIZE ]; DWORD dwType = 0, dwValueSize = sizeof( szValue ); if ( ERROR_SUCCESS == RegQueryValueEx( hSubKey, _T("NetCfgInstanceId"), NULL, &dwType, ( unsigned char* )szValue, &dwValueSize ) ) { CString strValueText( szValue ); if ( strValueText == pszAdapterName ) { StrCpyN( szValue, pszMACAddress, BUFSIZE ); DWORD dwDataSize = ( lstrlen(pszMACAddress) + 1 ) * sizeof( TCHAR ); if ( ERROR_SUCCESS == RegSetValueEx( hSubKey, _T("NetworkAddress"), 0, REG_SZ, ( unsigned char* )szValue, dwDataSize ) ) { bRet = TRUE; } RegCloseKey( hSubKey ); break; } } RegCloseKey( hSubKey ); } RegCloseKey( hKey ); if ( !ControlAdapter( DICS_PROPCHANGE, ETH_GUID_STRING ) ) { bRet = FALSE; } return ret; }
void CZProfilePageDialog::OnOK() { char szTempFile[MAX_PATH]; sprintf(szTempFile, "%s\\profilepageconfig.tmp", g_strCurrentWorkPath); ofstream out; out.open(szTempFile); if(out.is_open()) { out << "nAxesNo=" << m_oDraw.nAxesNo << "\n"; out << "fStartStat=" << m_oDraw.fStartStat << "\n"; out << "fEndStat=" << m_oDraw.fEndStat << "\n"; out << "bDiscLabel=" << m_oDraw.bDiscLabel << "\n"; out << "bMultiAxes=" << m_oDraw.bMultiAxes << "\n"; out << "bAuxlineDim=" << m_oDraw.bAuxlineDim << "\n"; out << "strStatPrefix=" << m_oDraw.strStatPrefix << "\n"; out << "bGrid=" << m_oDraw.bGrid << "\n"; out << "nGridWidth=" << m_oDraw.nGridWidth << "\n"; out << "nGridHeight=" << m_oDraw.nGridHeight << "\n"; out << "fXDimOffset=" << m_oDraw.fXDimOffset << "\n"; out << "fYDimOffset=" << m_oDraw.fYDimOffset << "\n"; out << "nMinSpan=" << m_oDraw.nMinSpan << "\n"; out << "nMianQueDim=" << m_oDraw.nMianQueDim << "\n"; out << "bPage=" << m_oDraw.bPage << "\n"; out << "nStartPageNo=" << m_oDraw.nStartPageNo << "\n"; out << "nPages=" << m_oDraw.nPages << "\n"; StrCpyN(m_oDraw.pFrameName, m_pFrameName[m_nFrameName - 1].listString, _countof(m_oDraw.pFrameName)); out << "pFrameName=" << m_oDraw.pFrameName << "\n"; StrCpyN(m_oDraw.pPaperSize, m_pPaperSize[m_nPaperSize - 1].listString, _countof(m_oDraw.pPaperSize)); out << "pPaperSize=" << m_oDraw.pPaperSize << "\n"; out << "nRatio=" << m_oDraw.nRatio << "\n"; out << "nColumn=" << m_oDraw.nColumn << "\n"; out << "bGroundLine=" << m_oDraw.advance.bGroundLine << "\n"; out << "pGroundLinePen=" << m_oDraw.advance.pGroundLinePen << "\n"; out << "bDimGroundHeight=" << m_oDraw.advance.bDimGroundHeight << "\n"; out << "bDesignLine=" << m_oDraw.advance.bDesignLine << "\n"; out << "pDesignLinePen=" << m_oDraw.advance.pDesignLinePen << "\n"; out << "bDimDesignHeight=" << m_oDraw.advance.bDimDesignHeight << "\n"; out << "bBridge=" << m_oDraw.advance.bBridge << "\n"; out << "bTunnel=" << m_oDraw.advance.bTunnel << "\n"; out << "bQue=" << m_oDraw.advance.bQue << "\n"; out << "bGroove=" << m_oDraw.advance.bGroove << "\n"; out << "bSideDitch=" << m_oDraw.advance.bSideDitch << "\n"; out << "bRoad=" << m_oDraw.advance.bRoad << "\n"; out << "pRoadPen=" << m_oDraw.advance.pRoadPen << "\n"; out << "bLand=" << m_oDraw.advance.bLand << "\n"; out << "pLandPen=" << m_oDraw.advance.pLandPen << "\n"; out << "fSteleHeight=" << m_oDraw.advance.fSteleHeight << "\n"; out << "bData=" << m_oDraw.advance.bData << "\n"; out << "pDataPen=" << m_oDraw.advance.pDataPen << "\n"; out << "nDataDimStyle=" << m_oDraw.advance.nDataDimStyle << "\n"; out << "bClearLine=" << m_oDraw.advance.bClearLine << "\n"; out << "bCutStepLine=" << m_oDraw.advance.bCutStepLine << "\n"; out << "bCrownDitch=" << m_oDraw.advance.bCrownDitch << "\n"; PathAddExtension(m_pOutFile, ".dwg"); out << "pOutFile=" << m_pOutFile << "\n"; out << "bDefaultOpen=" << m_bDefaultOpen << "\n"; out.close(); } // HANDLE hFile = CreateFile(szTempFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // if(hFile != NULL) // { // unsigned long dwLength = sizeof(m_oDraw); // WriteFile(hFile, &m_oDraw, dwLength, &dwLength, NULL); // CloseHandle(hFile); // } CCard1Dialog::OnOK(); }
// IpType : 0 : IPV6 and IPV4; 4:IPV4; 6:IPV6 U32 CDeviceMgr_i::GetAdapterInfo(NET_ADAPTER_INFO AdapterList[10],U8& AdapterListCnt, U8 IpType) { U32 ret = ERR_OK_I; //DWORD dwSize = 0; //DWORD dwRetVal = 0; int i = 0; // Set the flags to pass to GetAdaptersAddresses ULONG flags = GAA_FLAG_INCLUDE_PREFIX; // default to unspecified address family (both) ULONG family = AF_UNSPEC; //LPVOID lpMsgBuf = NULL; PIP_ADAPTER_ADDRESSES pAddresses = NULL; //ULONG outBufLen = 0; PIP_ADAPTER_ADDRESSES pCurrAddresses = NULL; PIP_ADAPTER_UNICAST_ADDRESS pUnicast = NULL; PIP_ADAPTER_ANYCAST_ADDRESS pAnycast = NULL; PIP_ADAPTER_MULTICAST_ADDRESS pMulticast = NULL; IP_ADAPTER_DNS_SERVER_ADDRESS *pDnServer = NULL; IP_ADAPTER_PREFIX *pPrefix = NULL; if (IpType == 4) family = AF_INET; else if (IpType == 6) family = AF_INET6; else family = AF_UNSPEC; ULONG uListSize = sizeof(g_buffer); // max. 10 adpater //int nAdapterIndex = 0; bool bDeleteBuffer = FALSE; pAddresses = (PIP_ADAPTER_ADDRESSES)g_buffer; AdapterListCnt = 0; DWORD dwRet = GetAdaptersAddresses(family, flags, NULL, pAddresses, &uListSize); if (dwRet == ERROR_NO_DATA) // No adapter information exists for the local computer. { TRACE_I(_T("** No adapter information exists for the local computer!\n")); ret = ERR_NO_ADAPTER_I; } else if (dwRet == ERROR_BUFFER_OVERFLOW) { pAddresses = (PIP_ADAPTER_ADDRESSES)HEAP_ALLOC(uListSize); bDeleteBuffer = TRUE; dwRet = GetAdaptersAddresses(family, flags, NULL, pAddresses, &uListSize); if(pAddresses == NULL) return ERR_NO_MORE_MEMORY_I; } else if(dwRet == ERROR_INVALID_PARAMETER) { ret = ERR_INVALID_PARAM_I; } else { ret = ERR_WIN32_ERROR_I; } TCHAR buff[256]; //DWORD bufflen = 256; if (dwRet == ERROR_SUCCESS) { ret = ERR_OK_I; pCurrAddresses = pAddresses; U8 ulIdx = 0; while (pCurrAddresses) { if(ulIdx >= 10) break; NET_ADAPTER_INFO* pAdapterList = (NET_ADAPTER_INFO*)&AdapterList[ulIdx++]; AdapterListCnt = ulIdx; //printf("\tLength of the IP_ADAPTER_ADDRESS struct: %ld\n", pCurrAddresses->Length); pAdapterList->IfIndex = pCurrAddresses->IfIndex; //printf("\tIfIndex (IPv4 interface): %u\n", pCurrAddresses->IfIndex); // Specifies the index of the interface with which these addresses are associated. #ifdef HAVE_UNICODE_I mbs2wcsz(buff, sizeof(buff), pCurrAddresses->AdapterName); StrCpyN(pAdapterList->szAdapterName,buff, sizeof(pAdapterList->szAdapterName)); #else StrCpyN(pAdapterList->szAdapterName, pCurrAddresses->AdapterName, sizeof(pAdapterList->szAdapterName)); #endif //printf("\tAdapter name: %s\n", pCurrAddresses->AdapterName); pAdapterList->bWirelessCard = IsWirelessCard(pAdapterList->szAdapterName); #ifdef HAVE_UNICODE_I StrCpyN(pAdapterList->szDnsSuffix, pCurrAddresses->DnsSuffix, sizeof(pAdapterList->szDnsSuffix)); #else wcs2mbsz(buff, sizeof(buff), pCurrAddresses->DnsSuffix); //printf("\tDNS Suffix: %s\n", buff); StrCpyN(pAdapterList->szDnsSuffix, buff, sizeof(pAdapterList->szDnsSuffix)); #endif #ifdef HAVE_UNICODE_I StrCpyN(pAdapterList->szDescription, pCurrAddresses->Description, sizeof(pAdapterList->szDescription)); #else wcs2mbsz(buff, sizeof(buff), pCurrAddresses->Description); StrCpyN(pAdapterList->szDescription, buff, sizeof(pAdapterList->szDescription)); #endif //_tprintf(_T("\tDescription: %s\n"), pAdapterList->szDescription); #ifdef HAVE_UNICODE_I StrCpyN(pAdapterList->szConnectionName, pCurrAddresses->FriendlyName, sizeof(pAdapterList->szConnectionName)); #else wcs2mbsz(buff, sizeof(buff), pCurrAddresses->FriendlyName); StrCpyN(pAdapterList->szConnectionName, buff, sizeof(pAdapterList->szConnectionName)); #endif //printf("\tFriendly name: %s\n", buff); pUnicast = pCurrAddresses->FirstUnicastAddress; if (pUnicast != NULL) { for (i = 0; pUnicast != NULL; i++) { if(i>=0xFF) break; if(FillIpAddr(buff, pUnicast->Address, i, pAdapterList->UnicastAddr) == FALSE) break; //printf("\tIP Address(Unicast Addresses): %s \n", buff); pUnicast = pUnicast->Next; } pAdapterList->UnicastAddrCnt = (u8)(i&0x0FF); //printf("\tNumber of Unicast Addresses: %d\n", i); } else { pAdapterList->UnicastAddrCnt = 0; //printf("\tNo Unicast Addresses\n"); } pAnycast = pCurrAddresses->FirstAnycastAddress; if (pAnycast) { for (i = 0; pAnycast != NULL; i++) { if(i>=0xFF) break; if(FillIpAddr(buff, pAnycast->Address, i, pAdapterList->AnycastAddr) == FALSE) break; //printf("\tIP Address(Anycast Addresses): %s \n", buff); pAnycast = pAnycast->Next; } //printf("\tNumber of Anycast Addresses: %d\n", i); pAdapterList->AnycastAddrCnt = (u8)(i&0x0FF); } else { pAdapterList->AnycastAddrCnt = 0; // printf("\tNo Anycast Addresses\n"); } pMulticast = pCurrAddresses->FirstMulticastAddress; if (pMulticast) { for (i = 0; pMulticast != NULL; i++) { if(i>=0xFF) break; if(FillIpAddr(buff, pMulticast->Address, i, pAdapterList->MulticastAddr) == FALSE) break; //printf("\tIP Address(Multicast Addresses): %s \n", buff); pMulticast = pMulticast->Next; } pAdapterList->MulticastAddrCnt = (u8)(i&0x0FF); //printf("\tNumber of Multicast Addresses: %d\n", i); } else { //printf("\tNo Multicast Addresses\n"); pAdapterList->MulticastAddrCnt = 0; } pDnServer = pCurrAddresses->FirstDnsServerAddress; if (pDnServer) { for (i = 0; pDnServer != NULL; i++) { if(i>=0xFF) break; if(FillIpAddr(buff, pDnServer->Address, i, pAdapterList->DnsServer) == FALSE) break; //printf("\tIP Address(DNS Server): %s \n", buff); pDnServer = pDnServer->Next; } pAdapterList->DnsServerCnt = (u8)(i&0x0FF); //printf("\tNumber of DNS Server Addresses: %d\n", i); } else { //printf("\tNo DNS Server Addresses\n"); pAdapterList->DnsServerCnt = 0; } pPrefix = pCurrAddresses->FirstPrefix; if (pPrefix) { for (i = 0; pPrefix != NULL; i++) { if(i>=0xFF) break; if(FillIpAddr(buff, pPrefix->Address, i, pAdapterList->PrefixAddr) == FALSE) break; pPrefix = pPrefix->Next; } pAdapterList->PrefixAddrCnt = (u8)(i&0x0FF); } else { pAdapterList->PrefixAddrCnt = 0; //printf("\tNo IP Adapter Prefix entries\n"); } pAdapterList->uMacAddressLen = 0; pAdapterList->uMacAddress[0] = 0; if (pCurrAddresses->PhysicalAddressLength != 0) { pAdapterList->uMacAddressLen = (u8)(pCurrAddresses->PhysicalAddressLength); memcpy(pAdapterList->uMacAddress, pCurrAddresses->PhysicalAddress, pAdapterList->uMacAddressLen); FormatMACToStr(pAdapterList->szMacAddr, pCurrAddresses->PhysicalAddress, pCurrAddresses->PhysicalAddressLength); } /* IP_ADAPTER_DDNS_ENABLED(0x01) Dynamic DNS is enabled on this adapter. IP_ADAPTER_REGISTER_ADAPTER_SUFFIX (0x02) Register the DNS suffix for this adapter. IP_ADAPTER_DHCP_ENABLED (0x04) Dynamic Host Configuration Protocol is enabled on this adapter. */ //printf("\tFlags: %ld\n", pCurrAddresses->Flags); pAdapterList->Flags = pCurrAddresses->Flags; pAdapterList->bDhcpEnabled = (pCurrAddresses->Flags&IP_ADAPTER_DHCP_ENABLED) ? TRUE:FALSE; pAdapterList->bDDNSEnabled = (pCurrAddresses->Flags&IP_ADAPTER_DDNS_ENABLED) ? TRUE:FALSE; pAdapterList->Mtu = pCurrAddresses->Mtu; //printf("\tMtu: %lu Bytes\n", pCurrAddresses->Mtu); // Specifies the maximum transmission unit (MTU), in bytes. /* #define MIB_IF_TYPE_OTHER 1 #define MIB_IF_TYPE_ETHERNET 6 #define MIB_IF_TYPE_TOKENRING 9 #define MIB_IF_TYPE_FDDI 15 #define MIB_IF_TYPE_PPP 23 #define MIB_IF_TYPE_LOOPBACK 24 #define MIB_IF_TYPE_SLIP 28 */ pAdapterList->IfType = pCurrAddresses->IfType; //printf("\tIfType: %ld\n", pCurrAddresses->IfType); // Specifies the type of interface using the values defined by the Internet Assigned Numbers Authority (IANA). if(pCurrAddresses->IfType == MIB_IF_TYPE_ETHERNET) { pAdapterList->bEthernetCard = TRUE; pAdapterList->bPhysicalCard = TRUE; } else { pAdapterList->bEthernetCard = FALSE; pAdapterList->bPhysicalCard = FALSE; } /* // OperStatus values from RFC 2863 typedef enum { IfOperStatusUp = 1, IfOperStatusDown, IfOperStatusTesting, IfOperStatusUnknown, IfOperStatusDormant, IfOperStatusNotPresent, IfOperStatusLowerLayerDown } IF_OPER_STATUS; */ pAdapterList->OperStatus = pCurrAddresses->OperStatus; if(pCurrAddresses->OperStatus==IfOperStatusUp) { pAdapterList->bConnected = TRUE; } else if(pCurrAddresses->OperStatus==IfOperStatusDown) { pAdapterList->bConnected = FALSE; } //printf("\tOperStatus: %ld\n", pCurrAddresses->OperStatus); // Specifies the operational status of the interface pAdapterList->Ipv6IfIndex = pCurrAddresses->Ipv6IfIndex; //printf("\tIpv6IfIndex (IPv6 interface): %u\n", pCurrAddresses->Ipv6IfIndex); // printf("\tZoneIndices (hex): "); // for (i = 0; i < 16; i++) // { // printf("%lx ", pCurrAddresses->ZoneIndices[i]); // } // printf("\n"); pCurrAddresses = pCurrAddresses->Next; } // while } else if (dwRet == ERROR_NO_DATA) // No adapter information exists for the local computer. { TRACE_I(_T("*** No adapter information exists for the local computer!\n")); ret = ERR_NO_ADAPTER_I; } else if (dwRet == ERROR_BUFFER_OVERFLOW) { ret = ERR_NO_MORE_MEMORY_I; } else if(dwRet == ERROR_INVALID_PARAMETER) { ret = ERR_INVALID_PARAM_I; } else { ret = ERR_WIN32_ERROR_I; } if(bDeleteBuffer && pAddresses) { HEAP_FREE(pAddresses); } return ret; }
/*---------------------------------------------------------------------------------------------- This processes Windows messages on the window. In general, it normally calls the appropriate method on the edit class. ----------------------------------------------------------------------------------------------*/ bool TssEdit::FWndProc(uint wm, WPARAM wp, LPARAM lp, long & lnRet) { bool fRet; switch (wm) { case WM_GETDLGCODE: // This is essential when embedded in a dialog to tell the dialog manager that it // wants to get key strokes. (We could try DLGC_WANTALLKEYS but I think we would then // get the Tab and Return keys...we may get them anyway with this combination...) // The last value tells Windows that when tabbing to this control we should use // EM_SETSEL to select all the text. lnRet = DLGC_WANTCHARS | DLGC_WANTARROWS | DLGC_HASSETSEL; return true; case EM_GETLINE: // Use FW_EM_GETLINE. case EM_REPLACESEL: // Use FW_EM_REPLACESEL. // We don't support these methods. Use the replacement TsString versions instead. Assert(false); lnRet = LB_ERR; return true; // NOTE: DO NOT send this message to a TssEdit if you want the actual text. Send the // FW_EM_GETTEXT message instead. This method is required for TssEdit controls on a // dialog because Windows will send the message to the control anytime the user hits a // key. case WM_GETTEXT: { ITsStringPtr qtss; GetText(&qtss); const wchar * pwrgch; int cch; HRESULT hr; IgnoreHr(hr = qtss->LockText(&pwrgch, &cch)); if (FAILED(hr)) return true; StrApp str(pwrgch, cch); qtss->UnlockText(pwrgch); lnRet = Min(cch + 1, (int)wp); achar * psz = reinterpret_cast<achar *>(lp); StrCpyN(psz, str.Chars(), lnRet); } return true; // NOTE: You should be sending an FW_EM_SETTEXT message instead of this. case WM_SETTEXT: { achar * psz = reinterpret_cast<achar *>(lp); StrUni stu(psz); ITsStrFactoryPtr qtsf; qtsf.CreateInstance(CLSID_TsStrFactory); ITsStringPtr qtss; CheckHr(qtsf->MakeStringRgch(stu.Chars(), stu.Length(), m_wsBase, &qtss)); SetText(qtss); } return true; case EM_CANUNDO: case EM_CHARFROMPOS: case EM_EMPTYUNDOBUFFER: case EM_FMTLINES: case EM_GETFIRSTVISIBLELINE: case EM_GETHANDLE: case EM_GETMODIFY: case EM_GETPASSWORDCHAR: case EM_GETRECT: case EM_GETTHUMB: case EM_GETWORDBREAKPROC: case EM_POSFROMCHAR: case EM_SETHANDLE: case EM_SETMODIFY: case EM_SETPASSWORDCHAR: case EM_SETRECT: case EM_SETRECTNP: case EM_SETTABSTOPS: case EM_SETWORDBREAKPROC: case EM_UNDO: case WM_GETFONT: case WM_SETFONT: // We don't support these methods. Assert(false); lnRet = LB_ERR; return true; case EM_GETLIMITTEXT: lnRet = GetLimitText(); return true; case FW_EM_GETLINE: lnRet = GetLine(wp, (ITsString **)lp); return true; case EM_GETLINECOUNT: lnRet = GetLineCount(); return true; case EM_GETMARGINS: lnRet = GetMargins(); return true; case FW_EM_GETSTYLE: GetStyle((StrUni *)lp, (COLORREF *)wp); return true; case EM_GETSEL: lnRet = GetSel((int *)wp, (int *)lp); return true; case EM_LINEFROMCHAR: lnRet = LineFromChar(wp); return true; case EM_LINEINDEX: lnRet = LineIndex(wp); return true; case EM_LINELENGTH: lnRet = LineLength(wp); return true; case EM_LINESCROLL: LineScroll(lp, wp); return true; case FW_EM_REPLACESEL: ReplaceSel((ITsString *)lp); return true; case EM_SCROLL: lnRet = ::SendMessage(m_hwnd, WM_VSCROLL, LOWORD(wp), 0); return true; case EM_SCROLLCARET: ScrollCaret(); return true; case EM_SETLIMITTEXT: SetLimitText(wp); return true; case EM_SETMARGINS: SetMargins(wp, LOWORD(lp), HIWORD(lp)); return true; case EM_SETREADONLY: SetReadOnly(wp); return true; case EM_SETSEL: SetSel(wp, lp); return true; case FW_EM_SETSTYLE: SetStyle((StrUni *)lp, (COLORREF)wp); return true; case WM_GETTEXTLENGTH: lnRet = GetTextLength(); return true; case FW_EM_GETTEXT: GetText((ITsString **)lp); return true; case FW_EM_SETTEXT: SetText((ITsString *)lp); return true; case WM_COPY: Copy(); return true; case WM_CUT: Cut(); return true; case WM_PASTE: Paste(); return true; case WM_HSCROLL: if (!OnHScroll(LOWORD(wp), HIWORD(wp), (HWND)lp)) { ::SendMessage(::GetParent(m_hwnd), WM_COMMAND, MAKEWPARAM(::GetDlgCtrlID(m_hwnd), EN_HSCROLL), (LPARAM)m_hwnd); } return true; case WM_VSCROLL: if (!OnVScroll(LOWORD(wp), HIWORD(wp), (HWND)lp)) { ::SendMessage(::GetParent(m_hwnd), WM_COMMAND, MAKEWPARAM(::GetDlgCtrlID(m_hwnd), EN_VSCROLL), (LPARAM)m_hwnd); } return true; case WM_KILLFOCUS: if (!OnKillFocus((HWND)wp)) { ::SendMessage(::GetParent(m_hwnd), WM_COMMAND, MAKEWPARAM(::GetDlgCtrlID(m_hwnd), EN_KILLFOCUS), (LPARAM)m_hwnd); } return true; case WM_SETFOCUS: if (!OnSetFocus((HWND)wp)) { ::SendMessage(::GetParent(m_hwnd), WM_COMMAND, MAKEWPARAM(::GetDlgCtrlID(m_hwnd), EN_SETFOCUS), (LPARAM)m_hwnd); } return true; // Calling SuperClass here causes two OnSetFocus calls for each OnKillFocus. //return SuperClass::FWndProc(wm, wp, lp, lnRet); case WM_CHAR: fRet = false; if (wp == VK_TAB) // '\t' { fRet = OnCharTab(); } else if (wp == VK_RETURN) // '\r' { fRet = OnCharEnter(); } else if (wp == VK_ESCAPE) // '\33' { fRet = OnCharEscape(); } if (fRet) return fRet; else return SuperClass::FWndProc(wm, wp, lp, lnRet); case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_MBUTTONDOWN: case WM_MBUTTONUP: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_MOUSEMOVE: if (HasToolTip()) { // Notify the tooltip belonging to the parent toolbar of the mouse message. Assert(m_hwndToolTip); MSG msg; msg.hwnd = m_hwnd; // ::GetParent(m_hwnd); msg.message = wm; msg.wParam = wp; msg.lParam = lp; ::SendMessage(m_hwndToolTip, TTM_RELAYEVENT, 0, (LPARAM)&msg); } break; default: break; } return SuperClass::FWndProc(wm, wp, lp, lnRet); }