⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 settings.cpp

📁 一个WinCE6。0下的IP phone的源代码
💻 CPP
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include "Settings.h"
#include "string.hxx"
#include "DebugMsg.h"
#include "includes.h"

const WCHAR c_wszHttpRegPath [] = L"Software\\Microsoft\\OWAExchangeClient\\HttpParams";
const WCHAR c_wszParseRegPath[] = L"Software\\Microsoft\\OWAExchangeClient\\ParseParams";

const WCHAR c_wszContactsBodyStartFmt[] = \
    L"<?xml version=\"1.0\"?>" \
      L"<g:searchrequest " \
         L"xmlns:g=\"DAV:\" " \
      L">" \
      L"<g:sql>" \
          L" Select \"urn:schemas:contacts:fileas\"," \
          L"\"urn:schemas:contacts:homePhone\"," \
          L"\"urn:schemas:contacts:telephoneNumber\"," \
          L"\"urn:schemas:contacts:mobile\"," \
          L"\"urn:schemas:contacts:email1\"," \
          L"\"urn:schemas:contacts:homepostaladdress\"," \
          L"\"urn:schemas:contacts:workaddress\"" \
          L"FROM Scope('DEEP TRAVERSAL OF \"/exchange/%s/contacts/\"') " \
          L"WHERE \"DAV:contentclass\" = 'urn:content-classes:person' ";

const WCHAR c_wszContactsBodyFilterFNFmt[] = \
    L" AND \"urn:schemas:contacts:givenName\" LIKE '%s%%' ";

const WCHAR c_wszContactsBodyFilterLNFmt[] = \
    L" AND \"urn:schemas:contacts:sn\" LIKE '%s%%' ";

const WCHAR c_wszContactsBodyEndFmt[] = \
          L"ORDER BY \"urn:schemas:contacts:fileas\""
      L"</>" \
    L"</>";

const OWAClientSetting c_SettingContactsUrlFmt         (c_wszHttpRegPath , L"ContactsUrlFmt"       ,L"%s/exchange/%s/contacts"  );
const OWAClientSetting c_SettingContactsMethod         (c_wszHttpRegPath , L"ContactsMethod"       ,L"SEARCH"                   );
const OWAClientSetting c_SettingContactsBodyStartFmt   (c_wszHttpRegPath , L"ContactsBodyStartFmt" ,c_wszContactsBodyStartFmt   );
const OWAClientSetting c_SettingContactsBodyEndFmt     (c_wszHttpRegPath , L"ContactsBodyEndFmt"   ,c_wszContactsBodyEndFmt     );
const OWAClientSetting c_SettingContactsBodyFilterFNFmt(c_wszHttpRegPath , L"ContactsBodyFNFmt"    ,c_wszContactsBodyFilterFNFmt);
const OWAClientSetting c_SettingContactsBodyFilterLNFmt(c_wszHttpRegPath , L"ContactsBodyLNFmt"    ,c_wszContactsBodyFilterLNFmt);

const OWAClientSetting c_SettingGALUrlFmt        (c_wszHttpRegPath , L"GALUrlFmt"       ,L"%s/exchange/?cmd=galfind");
const OWAClientSetting c_SettingGALMethod        (c_wszHttpRegPath , L"GALMethod"       ,L"GET" );
const OWAClientSetting c_SettingGALBodyFmt       (c_wszHttpRegPath , L"GALBodyFmt"      ,L""    );
const OWAClientSetting c_SettingGALAppendAlias   (c_wszHttpRegPath , L"GALAppendAlias"  ,L"&AN=");
const OWAClientSetting c_SettingGALAppendFirstName(c_wszHttpRegPath, L"GALAppendFN"     ,L"&FN=");
const OWAClientSetting c_SettingGALAppendLastName (c_wszHttpRegPath, L"GALAppendLN"     ,L"&LN=");

const OWAClientSetting c_SettingFBSUrlFmt        (c_wszHttpRegPath , L"FBSUrlFmt"       ,L"%s/public/?cmd=freebusy");
const OWAClientSetting c_SettingFBSMethod        (c_wszHttpRegPath , L"FBSMethod"       ,L"GET"                    );
const OWAClientSetting c_SettingFBSSearchLength  (c_wszHttpRegPath , L"FBSSearchLength" ,L"12"                     );
const OWAClientSetting c_SettingFBSBodyFmt       (c_wszHttpRegPath , L"FBSBodyFmt"      ,L""                       );
const OWAClientSetting c_SettingFBSIntervalLength(c_wszHttpRegPath , L"FBSInterval"     ,L"15");

const OWAClientSetting c_SettingAuthUrlFmt       (c_wszHttpRegPath , L"AuthUrlFmt"      ,L"%s/exchweb/bin/auth/owaauth.dll" );
const OWAClientSetting c_SettingAuthMethod       (c_wszHttpRegPath , L"AuthMethod"      ,L"POST"                            );
const OWAClientSetting c_SettingAuthBodyFmt      (c_wszHttpRegPath , L"AuthBodyFmt"     ,L"destination=%s/exchange/&flags=2&username=%s&password=%s&forcedownlevel=0&trusted=0" );
const OWAClientSetting c_SettingAuthLoginPageGUID(c_wszParseRegPath, L"OWALoginPageGUID",L"{57A118C6-2DA9-419d-BE9A-F92B0F9A418B}");
const OWAClientSetting c_SettingContactsDispName (c_wszParseRegPath, L"ContactsDispName"  ,L"fileas");
const OWAClientSetting c_SettingContactsWorkPhone(c_wszParseRegPath, L"ContactsWorkPhone" ,L"telephonenumber");
const OWAClientSetting c_SettingContactsHomePhone(c_wszParseRegPath, L"ContactsHomePhone" ,L"homephone");
const OWAClientSetting c_SettingContactsMobile   (c_wszParseRegPath, L"ContactsMobile"    ,L"mobile"); 
const OWAClientSetting c_SettingContactsEmail    (c_wszParseRegPath, L"ContactsEmail"     ,L"email1"); 
const OWAClientSetting c_SettingContactsHomeAddr (c_wszParseRegPath, L"ContactsHomeAddr"  ,L"homepostaladdress");
const OWAClientSetting c_SettingContactsWorkAddr (c_wszParseRegPath, L"ContactsWorkAddr"  ,L"workaddress");
const OWAClientSetting c_SettingContactsNewDataRecord(c_wszParseRegPath, L"ContactsNewDataRecord" ,L"response");

const OWAClientSetting c_SettingGALDispName      (c_wszParseRegPath, L"GALDispName" , L"DN");
const OWAClientSetting c_SettingGALAlias         (c_wszParseRegPath, L"GALAlias"    , L"AN");
const OWAClientSetting c_SettingGALOffice        (c_wszParseRegPath, L"GALOffice"   , L"OF");
const OWAClientSetting c_SettingGALPhone         (c_wszParseRegPath, L"GALPhone"    , L"PH");
const OWAClientSetting c_SettingGALSMTP          (c_wszParseRegPath, L"GALSMTP"     , L"EM");
const OWAClientSetting c_SettingGALNewDataRecord     (c_wszParseRegPath, L"GALDataRecord"   , L"item");

const OWAClientSetting c_SettingFBDEmailAddress  (c_wszParseRegPath, L"FBDEmailAddr", L"email");
const OWAClientSetting c_SettingFBDDispName      (c_wszParseRegPath, L"FBDDispName" , L"displayname");
const OWAClientSetting c_SettingFBDFreeBusy      (c_wszParseRegPath, L"FBDFreeBusy" , L"fbdata");
const OWAClientSetting c_SettingFBDNewDataRecord (c_wszParseRegPath, L"FBDNewDataRecord", L"item");

const OWAClientSetting c_SettingContactsAdditionalHeaderName  (c_wszHttpRegPath, L"ContactsAddHeaderName" , L"Content-Type");
const OWAClientSetting c_SettingContactsAdditionalHeaderValue (c_wszHttpRegPath, L"ContactsAddHeaderValue", L"text/xml"    );
const OWAClientSetting c_SettingGALAdditionalHeaderName       (c_wszHttpRegPath, L"GALAddHeaderName"      , L"User-Agent");
const OWAClientSetting c_SettingGALAdditionalHeaderValue      (c_wszHttpRegPath, L"GALAddHeaderValue"     , L"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT)");
const OWAClientSetting c_SettingFBSAdditionalHeaderName       (c_wszHttpRegPath, L"FBDAddHeaderName"      , L"User-Agent"  );
const OWAClientSetting c_SettingFBSAdditionalHeaderValue      (c_wszHttpRegPath, L"FBDAddHeaderValue"     , L"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT)");

const OWAClientSetting c_SettingLocaleName        (c_wszHttpRegPath, L"LocaleLanguageName" , L"Accept-Language");
const OWAClientSetting c_SettingLocaleDefaultValue(c_wszHttpRegPath, L"LocaleLanguageValue", L"en-us");

const OWAClientSetting* g_OWAClientSettings[] =
{
    &c_SettingContactsUrlFmt,
    &c_SettingContactsMethod,
    &c_SettingContactsBodyStartFmt,
    &c_SettingContactsBodyEndFmt,
    &c_SettingContactsBodyFilterFNFmt,
    &c_SettingContactsBodyFilterLNFmt,
    
    &c_SettingGALUrlFmt ,
    &c_SettingGALMethod ,
    &c_SettingGALBodyFmt,
    &c_SettingGALAppendAlias,
    &c_SettingGALAppendFirstName,
    &c_SettingGALAppendLastName,
    
    &c_SettingFBSUrlFmt ,
    &c_SettingFBSMethod ,
    &c_SettingFBSSearchLength,
    &c_SettingFBSBodyFmt,
    &c_SettingFBSIntervalLength,
    
    &c_SettingAuthUrlFmt,
    &c_SettingAuthMethod,
    &c_SettingAuthBodyFmt,
    &c_SettingAuthLoginPageGUID,
    
    &c_SettingContactsDispName,
    &c_SettingContactsWorkPhone,
    &c_SettingContactsHomePhone,
    &c_SettingContactsMobile,   
    &c_SettingContactsEmail,
    &c_SettingContactsHomeAddr,
    &c_SettingContactsWorkAddr,
    &c_SettingContactsNewDataRecord,
    
    &c_SettingGALDispName      , 
    &c_SettingGALAlias    ,
    &c_SettingGALOffice   ,
    &c_SettingGALPhone    ,
    &c_SettingGALSMTP     ,
    &c_SettingGALNewDataRecord,
    
    &c_SettingFBDEmailAddress,
    &c_SettingFBDDispName ,
    &c_SettingFBDFreeBusy ,
    &c_SettingFBDNewDataRecord,
    
    &c_SettingContactsAdditionalHeaderName ,
    &c_SettingContactsAdditionalHeaderValue,
    &c_SettingGALAdditionalHeaderName      ,
    &c_SettingGALAdditionalHeaderValue     ,
    &c_SettingFBSAdditionalHeaderName      ,
    &c_SettingFBSAdditionalHeaderValue     ,

    &c_SettingLocaleName        , 
    &c_SettingLocaleDefaultValue,
    NULL
};

/*------------------------------------------------------------------------------
    OWAClientSetting::Initialize
    
    Static method to initialize all the Settings from the registry
------------------------------------------------------------------------------*/
/* static */ HRESULT OWAClientSetting::Initialize()
{
    HRESULT hr = S_OK;

    INT i = 0;
    
    while (g_OWAClientSettings[i] != NULL)
    {
        hr = ((OWAClientSetting*)g_OWAClientSettings[i])->Load();
        ASSERT(SUCCEEDED(hr));

        i++;
    }

    return S_OK;
}

/*------------------------------------------------------------------------------
    OWAClientSetting::Load
    
    Load a settings' value from the registry (if it exists). Otherwise, store the default
    in the registry for next time.
------------------------------------------------------------------------------*/
HRESULT OWAClientSetting::Load()
{
    DWORD dwErr             = 0;
    HKEY  hkey              = NULL;
    WCHAR wszData[MAX_PATH] = L"";
    DWORD dwData            = ARRAYSIZE(wszData);
    BOOL  fOK               = TRUE;
    
    dwErr = RegOpenKeyEx(
        HKEY_LOCAL_MACHINE,
        m_wszRegKeyPath,
        0,
        0,
        &hkey
        );
    
    if (dwErr == ERROR_SUCCESS)
    {
        dwErr = RegQueryValueEx(
            hkey,
            m_wszValueName,
            NULL,
            NULL,
            (BYTE*)wszData,
            &dwData
            );
        NULL_TERMINATE_ARRAY(wszData);
    }

    if (dwErr == ERROR_SUCCESS)
    {
        fOK = m_wstrVal.assign(wszData);
    }
    else
    {
        DEBUGMSG(ZONE_OWAEC_TRACING_INFORMATIONAL, (L"OWAEC: RegKey %s\\%s was not found in the registry (dec err code %d)", m_wszRegKeyPath, m_wszValueName, dwErr));
        fOK = m_wstrVal.assign(m_wszDefaultData);
        (VOID)Store();
    }

    RegCloseKey(hkey);
    
    return (fOK) ? S_OK : E_OUTOFMEMORY;
}

/*------------------------------------------------------------------------------
    OWAClientSetting::Store
    
    Store the settings' default value in the registry
------------------------------------------------------------------------------*/
HRESULT OWAClientSetting::Store()
{
    DWORD dwErr             = 0;
    HKEY  hkey              = NULL;
    WCHAR wszData[MAX_PATH] = L"";
    DWORD dwData            = ARRAYSIZE(wszData);
    
    dwErr = RegCreateKeyEx(
        HKEY_LOCAL_MACHINE,
        m_wszRegKeyPath,
        0,
        NULL,
        0,
        0,
        NULL,
        &hkey,
        NULL
        );
    
    if (dwErr == ERROR_SUCCESS)
    {
        dwErr = RegSetValueEx(
            hkey,
            m_wszValueName,
            0,
            REG_SZ,
            (BYTE*)m_wszDefaultData,
            sizeof(WCHAR) * wcslen(m_wszDefaultData)
            );
    }

    RegCloseKey(hkey);

    return (dwErr == ERROR_SUCCESS) ? S_OK : HRESULT_FROM_WIN32(dwErr);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -