/*++ Copyright (c) 1996 Microsoft Corporation Module Name: faxreg.h Abstract: This header defines all of the fax service registry data structures and access functions. Author: Wesley Witt (wesw) 9-June-1996 Revision History: --*/ #ifndef _FAXREG_ #define _FAXREG_ #ifdef __cplusplus extern "C" { #endif #include "..\faxroute\FaxRouteP.h" typedef struct _REG_DEVICE_PROVIDER { LPTSTR FriendlyName; LPTSTR ImageName; LPTSTR ProviderName; DWORD dwAPIVersion; // The FSPI API Version. LPTSTR lptstrGUID; // The GUID of the FSP, might be NULL. } REG_DEVICE_PROVIDER, *PREG_DEVICE_PROVIDER; typedef struct _REG_ROUTING_METHOD { LPTSTR FriendlyName; LPTSTR FunctionName; LPTSTR Guid; LPTSTR InternalName; DWORD Priority; } REG_ROUTING_METHOD, *PREG_ROUTING_METHOD; typedef struct _REG_ROUTING_EXTENSION { LPTSTR FriendlyName; LPTSTR ImageName; LPTSTR InternalName; DWORD RoutingMethodsCount; PREG_ROUTING_METHOD RoutingMethods; } REG_ROUTING_EXTENSION, *PREG_ROUTING_EXTENSION; typedef struct _REG_DEVICE { DWORD TapiPermanentLineID; // The TAPI permanent line id for TAPI Lines. // For legacy virtual lines this is the same as PermanentLineId. LPTSTR Name; DWORD Flags; DWORD Rings; LPTSTR Csid; LPTSTR Tsid; LPTSTR lptstrDeviceName; // Device name LPTSTR lptstrDescription; // Device free-text description BOOL DeviceInstalled; // this is not stored, but is used to validate currently // installed tapi devices with the devices in the registry BOOL bValidDevice; // this indicates that the registry entries are created by FAXSVC // (and not by some FSP that writes to the registry directly) DWORD PermanentLineId; // The Fax Service generated permanent line id for the device (virtual or TAPI). // This is NOT the TAPI permanent id. LPTSTR lptstrProviderGuid; // The GUID of the FSP for this line, might be NULL. DWORDLONG dwlLastDetected; // FILETIME when this device was last detected } REG_DEVICE, *PREG_DEVICE; typedef struct _REG_CATEGORY { LPTSTR CategoryName; DWORD Number; DWORD Level; } REG_CATEGORY, *PREG_CATEGORY; typedef struct _REG_SETUP { LPTSTR Csid; LPTSTR Tsid; LPTSTR lptstrDescription; DWORD Rings; DWORD Flags; } REG_SETUP, *PREG_SETUP; typedef struct _REG_FAX_SERVICE { DWORD Retries; DWORD RetryDelay; DWORD DirtyDays; BOOL NextJobNumber; BOOL Branding; BOOL UseDeviceTsid; BOOL ServerCp; FAX_TIME StartCheapTime; FAX_TIME StopCheapTime; PREG_DEVICE_PROVIDER DeviceProviders; DWORD DeviceProviderCount; PREG_ROUTING_EXTENSION RoutingExtensions; DWORD RoutingExtensionsCount; PREG_DEVICE Devices; DWORD DeviceCount; PREG_CATEGORY Logging; DWORD LoggingCount; DWORD dwLastUniqueLineId; DWORD dwQueueState; DWORDLONG dwlMissingDeviceRegistryLifetime; DWORD dwMaxLineCloseTime; LPTSTR lptstrQueueDir; DWORD dwRecipientsLimit; DWORD dwAllowRemote; } REG_FAX_SERVICE, *PREG_FAX_SERVICE; typedef struct _REG_FAX_DEVICES { DWORD DeviceCount; PREG_DEVICE Devices; } REG_FAX_DEVICES, *PREG_FAX_DEVICES; typedef struct _REG_FAX_LOGGING { DWORD LoggingCount; PREG_CATEGORY Logging; } REG_FAX_LOGGING, *PREG_FAX_LOGGING; typedef enum { FAX_NO_DATA, FAX_DATA_ENCRYPTED, FAX_DATA_NOT_ENCRYPTED, } FAX_ENUM_DATA_ENCRYPTION; // // function prototypes // DWORD GetFaxRegistry( PREG_FAX_SERVICE *ppFaxReg ); VOID FreeFaxRegistry( PREG_FAX_SERVICE FaxReg ); BOOL CreateFaxEventSource( PREG_FAX_SERVICE FaxReg, PFAX_LOG_CATEGORY DefaultCategories, int DefaultCategoryCount ); PREG_FAX_DEVICES GetFaxDevicesRegistry( VOID ); BOOL SetFaxRoutingInfo( LPTSTR ExtensionName, LPTSTR MethodName, LPTSTR Guid, DWORD Priority, LPTSTR FunctionName, LPTSTR FriendlyName ) ; VOID FreeFaxDevicesRegistry( PREG_FAX_DEVICES FaxReg ); DWORD RegSetFaxDeviceFlags( DWORD PermanentLineID, DWORD Flags ); BOOL DeleteFaxDevice( DWORD PermanentLineID, DWORD PermanentTapiID ); BOOL UpdateLastDetectedTime( DWORD PermanentLineID, DWORDLONG TimeNow ); BOOL GetInstallationInfo( LPDWORD Installed, LPDWORD InstallType, LPDWORD InstalledPlatforms, LPDWORD ProductType ); BOOL IsModemClass1( LPSTR SubKey, LPBOOL Class1Fax ); BOOL SaveModemClass( LPSTR SubKey, BOOL Class1Fax ); DWORD RegAddNewFaxDevice( LPDWORD lpdwLastUniqueLineId, LPDWORD lpdwPermanentLineId, LPTSTR DeviceName, LPTSTR ProviderName, LPTSTR ProviderGuid, LPTSTR Csid, LPTSTR Tsid, DWORD TapiPermanentLineID, DWORD Flags, DWORD Rings ); BOOL GetOrigSetupData( IN DWORD dwPermanentLineId, OUT PREG_SETUP RegSetup ); VOID FreeOrigSetupData( PREG_SETUP RegSetup ); BOOL SetFaxGlobalsRegistry( PFAX_CONFIGURATION FaxConfig, DWORD dwQueueState ); BOOL GetLoggingCategoriesRegistry( PREG_FAX_LOGGING FaxRegLogging ); BOOL SetLoggingCategoriesRegistry( PREG_FAX_LOGGING FaxRegLogging ); BOOL SetFaxJobNumberRegistry( DWORD NextJobNumber ); DWORD SaveQueueState (DWORD dwNewState); DWORD StoreReceiptsSettings (CONST PFAX_RECEIPTS_CONFIG); DWORD LoadReceiptsSettings (PFAX_SERVER_RECEIPTS_CONFIGW); DWORD StoreOutboxSettings (PFAX_OUTBOX_CONFIG); DWORD LoadArchiveSettings (FAX_ENUM_MESSAGE_FOLDER, PFAX_ARCHIVE_CONFIG); DWORD StoreArchiveSettings (FAX_ENUM_MESSAGE_FOLDER, PFAX_ARCHIVE_CONFIG); DWORD LoadActivityLoggingSettings (PFAX_SERVER_ACTIVITY_LOGGING_CONFIG); DWORD StoreActivityLoggingSettings (PFAX_ACTIVITY_LOGGING_CONFIG); DWORD StoreDeviceConfig (DWORD dwDeviceId, PFAX_PORT_INFO_EX, BOOL bVirtualDevice); DWORD ReadExtensionData ( DWORD dwDeviceId, FAX_ENUM_DEVICE_ID_SOURCE DevIdSrc, LPCWSTR lpcwstrNameGUID, LPBYTE *ppData, LPDWORD lpdwDataSize ); DWORD WriteExtensionData ( DWORD dwDeviceId, FAX_ENUM_DEVICE_ID_SOURCE DevIdSrc, LPCWSTR lpcwstrNameGUID, LPBYTE pData, DWORD dwDataSize ); HKEY OpenOutboundGroupKey (LPCWSTR lpcwstrGroupName, BOOL fNewKey, REGSAM SamDesired); HKEY OpenOutboundRuleKey ( DWORD dwCountryCode, DWORD dwAreaCode, BOOL fNewKey, REGSAM SamDesired ); DWORD DeleteOutboundRuleKey (DWORD dwCountryCode, DWORD dwAreaCode); DWORD AddNewProviderToRegistry ( LPCWSTR lpcwstrGUID, LPCWSTR lpctstrFriendlyName, LPCWSTR lpctstrImageName, LPCWSTR lpctstrTspName, DWORD dwFSPIVersion ); BOOL SetRegistrySecureString ( HKEY hKey, LPCTSTR lpctstrValueName, LPCTSTR lpctstrValue, BOOL bOptionallyNonSecure ); DWORD RemoveProviderFromRegistry ( LPCWSTR lpctstrGUID ); DWORD WriteManualAnswerDeviceId ( DWORD dwDeviceId ); DWORD ReadManualAnswerDeviceId ( LPDWORD lpdwDeviceId ); DWORD FindServiceDeviceByTapiPermanentLineID( DWORD dwTapiPermanentLineID, LPCTSTR strDeviceName, PREG_SETUP pRegSetup, const PREG_FAX_DEVICES pInputFaxReg ); DWORD FindCacheEntryByTapiPermanentLineID( DWORD dwTapiPermanentLineID, LPCTSTR strDeviceName, const PREG_SETUP pRegSetup, LPDWORD lpdwLastUniqueLineId, BOOL* pfManualAnswer ); DWORD GetNewServiceDeviceID( LPDWORD lpdwLastUniqueLineId, LPDWORD lpdwPermanentLineId ); DWORD MoveDeviceRegIntoDeviceCache ( DWORD dwServerPermanentID, DWORD dwTapiPermanentLineID, BOOL fManualAnswer ); DWORD RestoreDeviceRegFromDeviceCache ( DWORD dwServerPermanentID, DWORD dwTapiPermanentLineID ); DWORD CleanOldDevicesFromDeviceCache ( DWORDLONG dwlTimeNow ); DWORD DeleteDeviceEntry( DWORD dwServerPermanentID ); DWORD DeleteTapiEntry( DWORD dwTapiPermanentLineID ); DWORD DeleteCacheEntry( DWORD dwTapiPermanentLineID ); LPTSTR GetRegistrySecureString( HKEY hKey, LPCTSTR lpctstrValueName, LPCTSTR lpctstrDefaultValue, BOOL bOptionallyNonSecure, FAX_ENUM_DATA_ENCRYPTION* pDataEncrypted ); #ifdef __cplusplus } //extern "C" #endif #endif