/*++ Copyright (c) 1996 Microsoft Corporation Module Name: async.c Abstract: Functions for asynch send wizard actions Environment: Windows XP fax driver user interface Revision History: 02/05/96 -davidx- Created it. mm/dd/yy -author- description --*/ #include "faxui.h" #include "tapiutil.h" #include "faxsendw.h" DWORD AsyncWizardThread( PBYTE param ) /*++ Routine Description: Do some agonizingly slow tasks asynchronously so the wizard seems faster to the user. Arguments: none. Return Value: not used. --*/ { PWIZARDUSERMEM pWizardUserMem = (PWIZARDUSERMEM) param; HANDLE FaxHandle = NULL; PFAX_TAPI_LINECOUNTRY_LIST pLineCountryList = NULL; DWORD dwRights = 0; DWORD dwFaxQueueState = 0; DWORD dwRecipientsLimit = 0; // default to no limit (backwards compatibility). Assert(pWizardUserMem); InitTapi (); if (!SetEvent(pWizardUserMem->hTAPIEvent)) { Error(("Can't set hTAPIEvent. ec = 0x%X", GetLastError())); } if (FaxConnectFaxServer(pWizardUserMem->lptstrServerName,&FaxHandle)) { if (!FaxAccessCheckEx (FaxHandle, MAXIMUM_ALLOWED, &dwRights)) { dwRights = 0; Error(("FaxAccessCheckEx: failed. ec = 0X%x\n",GetLastError())); } pWizardUserMem->dwRights = dwRights; pWizardUserMem->dwSupportedReceipts = 0; if(!FaxGetReceiptsOptions(FaxHandle, &pWizardUserMem->dwSupportedReceipts)) { Error(("FaxGetReceiptsOptions: failed. ec = 0X%x\n",GetLastError())); } if (!FaxGetQueueStates(FaxHandle,&dwFaxQueueState) ) { dwFaxQueueState = 0; Error(("FaxGetQueueStates: failed. ec = 0X%x\n",GetLastError())); } pWizardUserMem->dwQueueStates = dwFaxQueueState; if (!FaxGetRecipientsLimit(FaxHandle,&dwRecipientsLimit) ) { Error(("dwRecipientsLimit: failed. ec = 0X%x\n",GetLastError())); } pWizardUserMem->dwRecipientsLimit = dwRecipientsLimit; if (!FaxGetCountryList(FaxHandle,&pLineCountryList)) { Verbose(("Can't get a country list from the server %s", pWizardUserMem->lptstrServerName)); } else { Assert(pWizardUserMem->pCountryList==NULL); pWizardUserMem->pCountryList = pLineCountryList; } if (FaxHandle) { if (!FaxClose(FaxHandle)) { Verbose(("Can't close the fax handle %x",FaxHandle)); } } } else { Verbose(("Can't connect to the fax server %s",pWizardUserMem->lptstrServerName)); } if (!SetEvent(pWizardUserMem->hCountryListEvent)) { Error(("Can't set hCountryListEvent. ec = 0x%X",GetLastError())); } // // use server coverpages (may startup fax service, which is slow) // pWizardUserMem->ServerCPOnly = UseServerCp(pWizardUserMem->lptstrServerName); if (!SetEvent(pWizardUserMem->hCPEvent)) { Error(("Can't set hCPEvent. ec = 0x%X",GetLastError())); } #ifdef FAX_SCAN_ENABLED // // look for twain stuff // if (!(pWizardUserMem->dwFlags & FSW_USE_SCANNER) ){ pWizardUserMem->TwainAvail = FALSE; } else { pWizardUserMem->TwainAvail = InitializeTwain(pWizardUserMem); } if (!SetEvent(pWizardUserMem->hTwainEvent)) { Error(("Can't set hTwainEvent. ec = 0x%X",GetLastError())); } #endif // FAX_SCAN_ENABLED return ERROR_SUCCESS; }