home *** CD-ROM | disk | FTP | other *** search
- ///////////////////////////////////////////////////////////////////////////////
- //
- // File Name
- // _WINDS.H
- //
- // Description
- //
- // Author
- // Irving De la Cruz
- //
- // Revision: 1.7
- //
- // Written for Microsoft Windows Developer Support
- // Copyright (c) 1995-1996 Microsoft Corporation. All rights reserved.
- //
- #ifndef _WINDS_H
- #define _WINDS_H
-
- #define STRICT
- #include <WINDOWS.H>
- #include "WINDSGBL.H"
- #include "WINDSRC.H"
-
- #ifdef _DEBUG
- #define ENABLE_DEBUG_OUTPUT 1
- #endif // _DEBUG
- #define TRACES_NO_MAPI 1
-
- #include "TRACES.H"
-
- #define WINDS_DATABASE_VERSION 6
-
- // Buffers and pipe symbolic constants.
- #define READ_TIME_OUT INFINITE
- #define WRITE_TIME_OUT INFINITE
- #define GENERAL_TIME_OUT INFINITE
-
- #define MIN_PIPE_NUMBER 0x00000001
- #define MAX_PIPE_NUMBER 0x00FFFFFF
-
- #define ELEMENTS_TO_FETCH 25
-
- typedef enum _ACTION
- {
- IO_IDLE,
- IO_OPEN_STORAGE_FILE,
- IO_LOAD_MAILBOX_NAMES,
- IO_CREATE_NEW_MAILBOX,
- IO_REMOVE_MAILBOX,
- IO_EMPTY_MAILBOX,
- IO_GET_MAILBOX_PROPERTIES,
- IO_SET_MAILBOX_PROPERTIES,
-
- // Message Transport services
- IO_COPY_MSG_FROM_FILE,
- IO_COPY_MSG_TO_FILE,
- IO_MOVE_MSG_TO_FILE,
- IO_COPY_HEADERS_TO_FILE,
- IO_DELETE_MSG_IN_MAILBOX,
- IO_CHECK_PENDING_MESSAGES,
- IO_MOVE_NEXT_MSG_TO_FILE,
-
- // Address Book services
- IO_GET_CONTAINER_RECIPIENTS,
- IO_CREATE_DISTRIBUTION_LIST,
- IO_DELETE_DISTRIBUTION_LIST,
- IO_GET_DL_PROPERTIES,
- IO_SET_DL_PROPERTIES,
- IO_GET_GW_CONTAINER_COUNT,
-
- // Public folder services
- IO_CREATE_PUBLIC_FOLDER,
- IO_DELETE_PUBLIC_FOLDER,
- IO_GET_PF_PROPERTIES,
- IO_SET_PF_PROPERTIES,
- IO_CREATE_PF_NEW_MESSAGE,
- IO_DELETE_PF_MESSAGE,
- IO_OPEN_PF_MESSAGE,
- IO_MODIFY_PF_MESSAGE,
-
- // Remote Administrator
- IO_ADMIN_GET_SERVER_MAILBOXES,
- IO_ADMIN_GET_SERVER_DISTLISTS,
-
- // Helper actions for the notification mechanism
- IO_SENT_SHUTDOWN_NOTIFICATION,
- IO_RESTORE_CLIENT_NOTIFICATIONS
- } ACTION;
-
- typedef struct _IOTHREADINFO
- {
- BOOL fAppIsTerminating;
- BOOL fCloseHandle;
- ACTION Action;
- HANDLE hResumeEvent;
- HANDLE hActionCompleted;
- HANDLE hTmpFile;
- TCHAR szObject[MAX_ALIAS_SIZE+1];
- TCHAR szHeader[IO_BUFFERSIZE];
- PMAILBOX_INFO pMBInfo;
- PDIST_LIST_INFO pDLInfo;
- PPUBLIC_FOLDER_INFO pPFInfo;
- DWORD dwObjID;
- HRESULT * phLastError;
- DWORD * pdwData;
- PWINDS_NOTIFICATION pNotif;
- } IOTHREADINFO, *PIOTHREADINFO;
-
- typedef struct _DBINFO_DATA
- {
- DWORD dwVersion;
- } DBINFO_DATA;
-
- // This is the structure with the information that gets written to the
- // system registry database to save per-OS-USER-session information
- typedef struct tagAPP_OPTIONS
- {
- DWORD cbSize;
- TCHAR szDataFile[256];
- } APP_OPTIONS;
-
- #define SERVER_PIPE_NAME_FORMAT TEXT("\\\\.\\pipe\\%d")
-
- #define NAME_FORMAT_SIZE 32
-
- // Name string format for the OLE sub storages of the object database
- #define DBINFO_STREAM OLESTR("DATABASE INFO")
- #define OBJ_ID_POOL_STREAM OLESTR("OBJECT ID POOL")
- #define USER_PROPERTIES OLESTR("USER PROPERTIES")
- #define HEADERS_STORAGE OLESTR("HEADERS")
- #define MSGS_STORAGE OLESTR("MESSAGES")
- #define MSG_STREAM_FORMAT OLESTR("MSG %X")
- #define HEADER_STREAM_FORMAT OLESTR("HEADER %X")
- // Server Distribution List Support
- #define DISTRIBUTION_LISTS OLESTR("_DISTRIBUTION LISTS")
- #define DL_PROPS OLESTR("DL PROPERTIES")
- #define DL_MEMBERS OLESTR("DL MEMBERS")
- // Gateway Support
- #define FOREIGN_DIRECTORIES OLESTR("_GATEWAYS")
- #define GW_OUTBOX OLESTR("_GATEWAY OUT")
- #define GW_INBOX OLESTR("_GATEWAY IN")
- #define SMTP_GATEWAY OLESTR("SMTP")
- #define EXCHANGE_GATEWAY OLESTR("EXCHANGE")
- #define FAX_GATEWAY OLESTR("FAX")
- // Public Folders Support
- #define PUBLIC_FOLDERS_ROOT OLESTR("_PUBLIC FOLDERS ROOT")
- #define FOLDER_PROPS_STREAM OLESTR("FOLDER PROPERTIES")
- #define PUBLIC_FOLDER OLESTR("FOLDER %X")
-
- #define CREATE_FLAGS (STGM_CREATE | STGM_DIRECT | STGM_READWRITE | STGM_SHARE_EXCLUSIVE)
- #define OPEN_FLAGS (STGM_DIRECT | STGM_READWRITE | STGM_SHARE_EXCLUSIVE)
-
- #define MAINDLGCLASS TEXT("WindsDlgClass")
-
- extern "C"
- {
- extern IOTHREADINFO g_IOInfo;
- extern TCHAR g_szDataFile[];
- extern HRESULT g_hServerState;
- extern CRITICAL_SECTION g_csIOInfo;
- extern CRITICAL_SECTION g_csNotifLinks;
- extern CRITICAL_SECTION g_csServiceState;
- extern CRITICAL_SECTION g_csPipeID;
- extern DWORD g_dwNextPipeID;
- extern BOOL g_fRunningAsNTService;
- extern HINSTANCE ghInstance;
- extern HANDLE ghHeap;
-
- HRESULT WINAPI CreateDLsDirectory
- (LPSTORAGE pStorage);
- HRESULT WINAPI CreateGatewayDirectories
- (LPSTORAGE pStorage);
- HRESULT WINAPI CreatePublicFoldersDirectory
- (LPSTORAGE pStorage);
- HRESULT WINAPI GetObjectProp
- (DWORD dwObjID,
- DWORD * pdwObjType,
- MAILBOX_INFO * pMailboxInfo);
- HRESULT WINAPI GetServiceState
- ();
- HRESULT WINAPI AnsiToUnicode
- (LPSTR szStr,
- LPWSTR wcStr,
- ULONG cchUnicode);
- HRESULT WINAPI UnicodeToAnsi
- (LPWSTR wcStr,
- LPSTR szStr,
- ULONG cchAnsi);
- DWORD WINAPI GetNextPipeID
- ();
- void WINAPI ReleaseSyncObj
- ();
- void WINAPI LoadSettingsFromRegistry
- ();
- void WINAPI SaveSettingsToRegistry
- ();
- void WINAPI RemoveAllNotifLinks
- ();
- void WINAPI NotifyClients
- (PWINDS_NOTIFICATION pNotif);
-
- HRESULT WINAPI GetLocalTempFileName
- (LPTSTR szTmpFileName);
- HRESULT WINAPI FileCopy
- (HANDLE,
- HANDLE,
- DWORD);
- HRESULT WINAPI WaitForClientConnection
- (HANDLE hPipe,
- DWORD dwTimeOut);
- DWORD WINAPI WorkingIOProc
- ();
- DWORD WINAPI ClientNotifThreadProc
- (PWINDS_NOTIFICATION pNotif);
- };
-
- typedef struct _OBJLIST_NODE
- {
- struct _OBJLIST_NODE * pNext; // 4
- DWORD dwObjID; // 4
- WINDS_AB_OBJTYPE ObjType; // 4
- TCHAR szObjAlias[20]; // 20
- // Structure size = 32
- } OBJLIST_NODE, *POBJLIST_NODE;
-
- class CObjectList
- {
- public:
- STDMETHODIMP Insert
- (DWORD dwObjID,
- LPTSTR pObjName,
- WINDS_AB_OBJTYPE ObjType);
- STDMETHODIMP Delete
- (DWORD dwObjID);
- STDMETHODIMP FindObjFromID
- (DWORD dwObjID,
- LPTSTR pObjName,
- WINDS_AB_OBJTYPE * pObjType);
- STDMETHODIMP FindObjFromName
- (WINDS_AB_OBJTYPE ObjType,
- LPTSTR pObjName,
- DWORD * pdwObjID);
- STDMETHODIMP FindObjAndTypeFromName
- (LPTSTR pObjName,
- WINDS_AB_OBJTYPE * pObjType,
- DWORD * pdwObjID);
- BOOL WINAPI IsAliasNameAvailable
- (LPTSTR pObjName);
-
- public:
- CObjectList();
- ~CObjectList();
-
- private:
- HANDLE m_hHeap;
- CRITICAL_SECTION m_csObj;
- POBJLIST_NODE m_pHead;
- };
-
- extern CObjectList GlobalObjectMap;
-
- #endif // _WINDS_H
-
- // End of file for WINDS.H
-