|
|
//-----------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: A T M U T I L . C P P
//
// Contents: Utility function declaration
//
// Notes:
//
// Author: tongl 3 Feb 1997
//
//-----------------------------------------------------------------------
#include "pch.h"
#pragma hdrstop
#include "atmutil.h"
#include "ncmisc.h"
//#include "ncreg.h"
#include "ncstl.h"
void GetLowerIp(tstring& strIpRange, tstring * pstrLowerIp) { size_t iSeparator = strIpRange.find(c_chSeparator); if(iSeparator != tstring::npos) { // get the first half of the string
*pstrLowerIp = strIpRange.substr(0, iSeparator); }
return; }
void GetUpperIp(tstring& strIpRange, tstring * pstrUpperIp) { size_t iSeparator = strIpRange.find(c_chSeparator); if(iSeparator != tstring::npos) { // get the first half of the string
*pstrUpperIp = strIpRange.substr(iSeparator+1); }
return; }
BOOL IsValidIpRange(tstring& strIpLower, tstring& strIpUpper) { if (strIpLower > strIpUpper) return FALSE; else return TRUE; }
void MakeIpRange(tstring& strIpLower, tstring& strIpUpper, tstring * pstrNewIpRange) { tstring strNewIpRange = strIpLower; strNewIpRange += c_chSeparator; strNewIpRange += strIpUpper;
*pstrNewIpRange = strNewIpRange;
return; }
void InitComboWithStringArray(HWND hDlg, int nIDDlgItem, int csid, const int* asid) { while (csid--) { SendDlgItemMessage(hDlg, nIDDlgItem, CB_ADDSTRING, 0, (LPARAM)((PWSTR) SzLoadIds(* asid++))); } }
void ConvertBinaryToHexString(BYTE * pbData, DWORD cbData, tstring * pstrData) { Assert(pstrData); Assert(pbData);
tstring strData = c_szEmpty; WCHAR szByte[3];
while (cbData>0) { ConvertByteToSz(pbData, szByte); strData += szByte;
pbData ++; cbData --; }
*pstrData = strData; }
void ConvertByteToSz(BYTE * pbData, PWSTR pszByte) { // high 4 bits
BYTE bHighData = *pbData; bHighData &= 0xF0; bHighData >>= 4; pszByte[0] = (bHighData < 10) ? L'0'+bHighData : L'A'+(bHighData-10);
// low 4 bits
BYTE bLowData = *pbData; bLowData &= 0x0F; pszByte[1] = (bLowData < 10) ? L'0'+bLowData : L'A'+(bLowData-10);
// terminater.
pszByte[2] = L'\0'; }
void ConvertHexCharToByte(WCHAR ch, BYTE * pByte) { *pByte =0;
if ((ch >= L'0') && (ch <= L'9')) *pByte = ch-L'0'; else if ((ch >= L'A') && (ch <= L'F')) *pByte = ch-L'A'+10; else if ((ch >= L'a') && (ch <= L'f')) *pByte = ch-L'a'+10; else AssertSz(FALSE, "Invalid hex character."); }
void ConvertHexStringToBinaryWithAlloc(PCWSTR pszData, LPBYTE * ppbData, LPDWORD pcbData) { // Initialize the output parameters.
*ppbData = NULL; *pcbData = 0;
LPBYTE pbBuffer = NULL; DWORD cbBuffer = wcslen(pszData)/2; const WCHAR * pChar = pszData;
if ((*pszData == L'0') && ((*(pszData+1) == L'x') || (*(pszData+1) == L'X'))) { cbBuffer -=2; pChar +=2; }
if (cbBuffer) { pbBuffer = new BYTE[cbBuffer];
if (pbBuffer == NULL) { AssertSz(FALSE, "new returned a NULL pointer"); return; }
BYTE * pByte = pbBuffer;
if (pByte != NULL) { while (*pChar) { *pByte=0;
BYTE bData;
// first 4 bits
ConvertHexCharToByte(*pChar, &bData); bData <<= 4; *pByte |= bData; pChar++;
// second 4 bits
ConvertHexCharToByte(*pChar, &bData); *pByte |= bData; pChar++;
pByte++; } } }
*ppbData = pbBuffer; *pcbData = cbBuffer; }
|