SOL9 2.0 Class: DnsContext

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * DnsContext.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9 2.0

// 2011/1/1 

#pragma once
#include <sol/dns/DnsObject.h>
// 2011/09/5 Modified to use SecurituAuthIdentity.h
#include <sol/net/SecurityAuthIdentity.h>


namespace SOL {

class DnsContext :public DnsObject {
private:
    HANDLE hContext;

public:
    DnsContext()
    :hContext(NULL)
    {
    }


public:
    /**
     * @credentialFlags A flag that indicates the character encoding. Set to TRUE for Unicode, FALSE for ANSI.
     */
    DNS_STATUS  acquire(__in_opt PSEC_WINNT_AUTH_IDENTITY credentials=NULL)
    {

#ifdef UNICODE
        DWORD credentialFlags = TRUE;
#else
        DWORD credentialFlags = FALSE;
#endif
        DNS_STATUS rc = DnsAcquireContextHandle(
                credentialFlags,
                (void*)credentials,
                &hContext);
        if (rc != ERROR_SUCCESS) {
            throw Exception("DnsContext::DnsContext failed", rc);
        }
        return rc;
    }

public:
    /**
     * @credentialFlags A flag that indicates the character encoding. Set to TRUE for Unicode, FALSE for ANSI.
     */
    DNS_STATUS acquire(__in SecurityAuthIdentity& identity)
    {

#ifdef UNICODE
        DWORD credentialFlags = TRUE;
#else
        DWORD credentialFlags = FALSE;
#endif
        const SEC_WINNT_AUTH_IDENTITY* credentials = NULL;
        if (identity.hasUserName()) {
            credentials = identity.getCredentials();
        }
        //_tprintf(_T("DnsContext::DnsContext SEC_WINNT_AUTH_IDENTITY=%ld\n"), credentials);

        DNS_STATUS rc = DnsAcquireContextHandle(
                credentialFlags,
                (void*)credentials,
                &hContext);
        if (rc != ERROR_SUCCESS) {
            throw Exception("DnsContext::DnsContext failed", rc);
        }            
        return rc;
    }


public:
    ~DnsContext()
    {
        if (hContext) {
            DnsReleaseContextHandle(hContext);
            hContext = NULL;
        }
    }

public:
    HANDLE getHandle()
    {
        return hContext;
    }

public:
    operator const HANDLE() const
    {
        return this->hContext;
    }
};

}


Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.