Ejemplo n.º 1
3
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;
}
Ejemplo n.º 2
0
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));
}
Ejemplo n.º 3
0
////////////////////////////////////////////////////////////////////////////////////
// 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()
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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");
	}

}
Ejemplo n.º 7
0
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;
}
Ejemplo n.º 8
0
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 
  } 
}
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
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);
}
Ejemplo n.º 11
0
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;
}
Ejemplo n.º 12
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;
}
Ejemplo n.º 13
0
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");
}
Ejemplo n.º 14
0
		  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;
        }
Ejemplo n.º 15
0
__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);
}
Ejemplo n.º 16
0
Archivo: ufs4tc.c Proyecto: laz2/ufs4tc
/**
 * 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));
}
Ejemplo n.º 17
0
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);
//     }
}
Ejemplo n.º 18
0
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;
}
Ejemplo n.º 19
0
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();
}
Ejemplo n.º 20
0
// 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;
}
Ejemplo n.º 21
0
/*----------------------------------------------------------------------------------------------
	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);
}