길고도 길었던 COM관련 프로젝트가 거의 종결되었다. 최종버전은 1,0,0,7.
7번의 릴리즈를 거쳐서야 그나마 안정적이라고 할만한 버전이 튀어나왔다. 이미 개발한 COM서비스 되고 있는 사이트는 오픈한지가 오래고, 몇몇 필요한 사람들의 PC에는 설치가 되었으리라. 물론 앞으로도 필요 기능이라던가 알 수 없는 버그가 발견되면, 수정이 계속되겠지만 말이지. 여하튼 프로젝트를 하면서 '구글링'이나 'CnP'로 엎어온 코드들을 조금 정리해볼 생각이다.

CString GetMacAddressFunc()
{
    CString error = "ERROR";
    PIP_ADAPTER_INFO pAdapter;       
    ULONG ulLeng;

    DWORD dwResult = GetAdaptersInfo(NULL, &ulLeng);
    if(dwResult != ERROR_BUFFER_OVERFLOW)       
        return error;

    pAdapter = new IP_ADAPTER_INFO[ulLeng];
    if(pAdapter == NULL){
        delete [] pAdapter;
        return error;       
    }
           
    dwResult = GetAdaptersInfo(pAdapter, &ulLeng);
    if((dwResult != ERROR_SUCCESS) || (pAdapter->Type != 6)){
        delete [] pAdapter;
        return error;       
    }
   
    ulLeng = pAdapter->AddressLength;
    size_t i, j;

    PBYTE pbHexMac = (PBYTE)pAdapter->Address;

    CString szResult = _T("");
    CString szTemp;

    for (i = 0, j = 0; i < ulLeng - 1; ++i) {
        szTemp = _T("");
        szTemp.Format(_T("%02X:"), pbHexMac[i]);
    szResult = szResult + szTemp;
    }

    szTemp = _T("");
    szTemp.Format(_T("%02X"), pbHexMac[i]);
    szResult = szResult + szTemp;

    delete [] pAdapter;
   
    return szResult;
}
 


 

Posted by Master 
: