text: #pragma once
  // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
  
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  // IIS Config schema names
  #define IIS_CONFIG_ADD                      L"add"
  #define IIS_CONFIG_ALLOWED                  L"allowed"
  #define IIS_CONFIG_APPHOST_ROOT             L"MACHINE/WEBROOT/APPHOST"
  #define IIS_CONFIG_APPLICATION              L"application"
  #define IIS_CONFIG_APPPOOL                  L"applicationPool"
  #define IIS_CONFIG_APPPOOL_AUTO             L"autoStart"
  #define IIS_CONFIG_APPPOOL_SECTION          L"system.applicationHost/applicationPools"
  #define IIS_CONFIG_AUTOSTART                L"serverAutoStart"
  #define IIS_CONFIG_BINDING                  L"binding"
  #define IIS_CONFIG_BINDINGINFO              L"bindingInformation"
  #define IIS_CONFIG_BINDINGS                 L"bindings"
  #define IIS_CONFIG_DESC                     L"description"
  #define IIS_CONFIG_EXECUTABLE               L"scriptProcessor"
  #define IIS_CONFIG_ENABLED                  L"enabled"
  #define IIS_CONFIG_ENABLE32                 L"enable32BitAppOnWin64"
  #define IIS_CONFIG_FILEEXT                  L"fileExtension"
  #define IIS_CONFIG_FILTER                   L"filter"
  #define IIS_CONFIG_GROUPID                  L"groupId"
  #define IIS_CONFIG_HEADERS                  L"customHeaders"
  #define IIS_CONFIG_HTTPERRORS_SECTION       L"system.webServer/httpErrors"
  #define IIS_CONFIG_ID                       L"id"
  #define IIS_CONFIG_ISAPI_SECTION            L"system.webServer/isapiFilters"
  #define IIS_CONFIG_HTTPPROTO_SECTION        L"system.webServer/httpProtocol"
  #define IIS_CONFIG_LOG_SECTION              L"system.applicationHost/log"
  #define IIS_CONFIG_LOG_UTF8                 L"logInUTF8"
  #define IIS_CONFIG_LIMITS                   L"limits"
  #define IIS_CONFIG_PIPELINEMODE             L"managedPipelineMode"
  #define IIS_CONFIG_MANAGEDRUNTIMEVERSION    L"managedRuntimeVersion"
  #define IIS_CONFIG_WEBLOG                   L"logFile"
  #define IIS_CONFIG_LOGFORMAT                L"logFormat"
  #define IIS_CONFIG_MIMEMAP                  L"mimeMap"
  #define IIS_CONFIG_MIMETYPE                 L"mimeType"
  #define IIS_CONFIG_MODULES                  L"modules"
  #define IIS_CONFIG_NAME                     L"name"
  #define IIS_CONFIG_PATH                     L"path"
  #define IIS_CONFIG_PHYSPATH                 L"physicalPath"
  #define IIS_CONFIG_PROTOCOL                 L"protocol"
  #define IIS_CONFIG_RESTRICTION_SECTION      L"system.webServer/security/isapiCgiRestriction"
  #define IIS_CONFIG_SITE                     L"site"
  #define IIS_CONFIG_SITE_ID                  L"id"
  #define IIS_CONFIG_SITES_SECTION            L"system.applicationHost/sites"
  #define IIS_CONFIG_CONNECTTIMEOUT           L"connectionTimeout"
  #define IIS_CONFIG_VDIR                     L"virtualDirectory"
  #define IIS_CONFIG_VALUE                    L"value"
  #define IIS_CONFIG_VERBS                    L"verb"
  #define IIS_CONFIG_WEBLIMITS_SECTION        L"system.applicationHost/webLimits"
  #define IIS_CONFIG_WEBLIMITS_MAXBAND        L"maxGlobalBandwidth"
  #define IIS_CONFIG_TRUE                     L"true"
  #define IIS_CONFIG_FALSE                    L"false"
  #define IIS_CONFIG_ERROR                    L"error"
  #define IIS_CONFIG_STATUSCODE               L"statusCode"
  #define IIS_CONFIG_SUBSTATUS                L"subStatusCode"
  #define IIS_CONFIG_LANGPATH                 L"prefixLanguageFilePath"
  #define IIS_CONFIG_RESPMODE                 L"responseMode"
  #define IIS_CONFIG_CLEAR                    L"clear"
  #define IIS_CONFIG_RECYCLING                L"recycling"
  #define IIS_CONFIG_PEROIDRESTART            L"periodicRestart"
  #define IIS_CONFIG_TIME                     L"time"
  #define IIS_CONFIG_REQUESTS                 L"requests"
  #define IIS_CONFIG_SCHEDULE                 L"schedule"
  #define IIS_CONFIG_MEMORY                   L"memory"
  #define IIS_CONFIG_PRIVMEMORY               L"privateMemory"
  #define IIS_CONFIG_PROCESSMODEL             L"processModel"
  #define IIS_CONFIG_IDLETIMEOUT              L"idleTimeout"
  #define IIS_CONFIG_QUEUELENGTH              L"queueLength"
  #define IIS_CONFIG_IDENITITYTYPE            L"identityType"
  #define IIS_CONFIG_LOCALSYSTEM              L"LocalSystem"
  #define IIS_CONFIG_LOCALSERVICE             L"LocalService"
  #define IIS_CONFIG_NETWORKSERVICE           L"NetworkService"
  #define IIS_CONFIG_SPECIFICUSER             L"SpecificUser"
  #define IIS_CONFIG_APPLICATIONPOOLIDENTITY  L"ApplicationPoolIdentity"
  #define IIS_CONFIG_USERNAME                 L"userName"
  #define IIS_CONFIG_PASSWORD                 L"password"
  #define IIS_CONFIG_CPU                      L"cpu"
  #define IIS_CONFIG_LIMIT                    L"limit"
  #define IIS_CONFIG_CPU_ACTION               L"action"
  #define IIS_CONFIG_KILLW3WP                 L"KillW3wp"
  #define IIS_CONFIG_NOACTION                 L"NoAction"
  #define IIS_CONFIG_RESETINTERVAL            L"resetInterval"
  #define IIS_CONFIG_MAXWRKPROCESSES          L"maxProcesses"
  #define IIS_CONFIG_HANDLERS_SECTION         L"system.webServer/handlers"
  #define IIS_CONFIG_DEFAULTDOC_SECTION       L"system.webServer/defaultDocument"
  #define IIS_CONFIG_ASP_SECTION              L"system.webServer/asp"
  #define IIS_CONFIG_SCRIPTERROR              L"scriptErrorSentToBrowser"
  #define IIS_CONFIG_STATICCONTENT_SECTION    L"system.webServer/staticContent"
  #define IIS_CONFIG_HTTPEXPIRES              L"httpExpires"
  #define IIS_CONFIG_MAXAGE                   L"cacheControlMaxAge"
  #define IIS_CONFIG_CLIENTCACHE              L"clientCache"
  #define IIS_CONFIG_CACHECONTROLMODE         L"cacheControlMode"
  #define IIS_CONFIG_USEMAXAGE                L"UseMaxAge"
  #define IIS_CONFIG_USEEXPIRES               L"UseExpires"
  #define IIS_CONFIG_CACHECUST                L"cacheControlCustom"
  #define IIS_CONFIG_ASP_SECTION              L"system.webServer/asp"
  #define IIS_CONFIG_SESSION                  L"session"
  #define IIS_CONFIG_ALLOWSTATE               L"allowSessionState"
  #define IIS_CONFIG_TIMEOUT                  L"timeout"
  #define IIS_CONFIG_BUFFERING                L"bufferingOn"
  #define IIS_CONFIG_PARENTPATHS              L"enableParentPaths"
  #define IIS_CONFIG_SCRIPTLANG               L"scriptLanguage"
  #define IIS_CONFIG_SCRIPTTIMEOUT            L"scriptTimeout"
  #define IIS_CONFIG_LIMITS                   L"limits"
  #define IIS_CONFIG_ALLOWDEBUG               L"appAllowDebugging"
  #define IIS_CONFIG_ALLOWCLIENTDEBUG         L"appAllowClientDebug"
  #define IIS_CONFIG_CERTIFICATEHASH          L"certificateHash"
  #define IIS_CONFIG_CERTIFICATESTORENAME     L"certificateStoreName"
  #define IIS_CONFIG_HTTPLOGGING_SECTION      L"system.webServer/httpLogging"
  #define IIS_CONFIG_DONTLOG                  L"dontLog"
  
  typedef BOOL (CALLBACK* ENUMAPHOSTELEMENTPROC)(IAppHostElement*, LPVOID);
  typedef BOOL (CALLBACK* VARIANTCOMPARATORPROC)(VARIANT*, VARIANT*);
  
  HRESULT DAPI Iis7PutPropertyVariant(
      __in IAppHostElement *pElement,
      __in LPCWSTR wzPropName,
      __in VARIANT vtPut
      );
  
  HRESULT DAPI Iis7PutPropertyInteger(
      __in IAppHostElement *pElement,
      __in LPCWSTR wzPropName,
      __in DWORD dValue
      );
  
  HRESULT DAPI Iis7PutPropertyString(
      __in IAppHostElement *pElement,
      __in LPCWSTR wzPropName,
      __in LPCWSTR wzString
      );
  
  HRESULT DAPI Iis7PutPropertyBool(
      __in IAppHostElement *pElement,
      __in LPCWSTR wzPropName,
      __in BOOL fValue);
  
  HRESULT DAPI Iis7GetPropertyVariant(
      __in IAppHostElement *pElement,
      __in LPCWSTR wzPropName,
      __in VARIANT* vtGet
      );
  
  HRESULT DAPI Iis7GetPropertyString(
      __in IAppHostElement *pElement,
      __in LPCWSTR wzPropName,
      __in LPWSTR* psczGet
      );
  
  struct IIS7_APPHOSTELEMENTCOMPARISON
  {
      LPCWSTR sczElementName;
      LPCWSTR sczAttributeName;
      VARIANT* pvAttributeValue;
      VARIANTCOMPARATORPROC pComparator;
  };
  
  BOOL DAPI Iis7IsMatchingAppHostElement( 
      __in IAppHostElement *pElement,
      __in IIS7_APPHOSTELEMENTCOMPARISON* pComparison
      );
  
  HRESULT DAPI Iis7FindAppHostElementString( 
      __in IAppHostElementCollection *pCollection,
      __in LPCWSTR wzElementName,
      __in LPCWSTR wzAttributeName,
      __in LPCWSTR wzAttributeValue,
      __out IAppHostElement** ppElement,
      __out DWORD* pdwIndex
      );
  
  HRESULT DAPI Iis7FindAppHostElementPath( 
      __in IAppHostElementCollection *pCollection,
      __in LPCWSTR wzElementName,
      __in LPCWSTR wzAttributeName,
      __in LPCWSTR wzAttributeValue,
      __out IAppHostElement** ppElement,
      __out DWORD* pdwIndex
      );
  
  HRESULT DAPI Iis7FindAppHostElementInteger( 
      __in IAppHostElementCollection *pCollection,
      __in LPCWSTR wzElementName,
      __in LPCWSTR wzAttributeName,
      __in DWORD dwAttributeValue,
      __out IAppHostElement** ppElement,
      __out DWORD* pdwIndex
      );
  
  HRESULT DAPI Iis7FindAppHostElementVariant( 
      __in IAppHostElementCollection *pCollection,
      __in LPCWSTR wzElementName,
      __in LPCWSTR wzAttributeName,
      __in VARIANT* pvAttributeValue,
      __out IAppHostElement** ppElement,
      __out DWORD* pdwIndex
      );
  
  HRESULT DAPI Iis7EnumAppHostElements( 
      __in IAppHostElementCollection *pCollection,
      __in ENUMAPHOSTELEMENTPROC pCallback,
      __in LPVOID pContext,
      __out IAppHostElement** ppElement,
      __out DWORD* pdwIndex
      );
  
  HRESULT DAPI Iis7FindAppHostMethod(
      __in IAppHostMethodCollection *pCollection,
      __in LPCWSTR wzMethodName,
      __out IAppHostMethod** ppMethod,
      __out DWORD* pdwIndex
      );
  
  #ifdef __cplusplus
  }
  #endif
  