// base IU header #ifndef __IU_H_ #define __IU_H_ #include #include #include #include #include // // cdm.h is checked in as //depot/Lab04_N/enduser/published/inc/cdm.w and // published to $(BASEDIR)\public\internal\enduser\inc // #include ///////////////////////////////////////////////////////////////////////////// // Engine typedefs // // used to delegate calls to engine (IUEngine.dll) from stub (IUCtl.dll) // and used to support other WU clients (AU/DU) ///////////////////////////////////////////////////////////////////////////// // // Declare a type-safe handle to use with iuengine exports // DECLARE_HANDLE (HIUENGINE); typedef HRESULT (WINAPI * PFN_GetSystemSpec)(HIUENGINE hIUEngine, BSTR bstrXmlClasses, DWORD dwFlags, BSTR* pbstrXmlDetectionResult); typedef HRESULT (WINAPI * PFN_GetManifest) (HIUENGINE hIUEngine, BSTR bstrXmlClientInfo, BSTR bstrXmlSystemSpec, BSTR bstrXmlQuery, DWORD dwFlags, BSTR* pbstrXmlCatalog); typedef HRESULT (WINAPI * PFN_Detect) (HIUENGINE hIUEngine, BSTR bstrXmlCatalog, DWORD dwFlags, BSTR* pbstrXmlItems); typedef HRESULT (WINAPI * PFN_Download) (HIUENGINE hIUEngine, BSTR bstrXmlClientInfo, BSTR bstrXmlCatalog, BSTR bstrDestinationFolder, LONG lMode, IUnknown* punkProgressListener, HWND hWnd, BSTR* pbstrXmlItems); typedef HRESULT (WINAPI * PFN_DownloadAsync)(HIUENGINE hIUEngine, BSTR bstrXmlClientInfo, BSTR bstrXmlCatalog, BSTR bstrDestinationFolder, LONG lMode, IUnknown* punkProgressListener, HWND hWnd, BSTR bstrUuidOperation, BSTR* pbstrUuidOperation); typedef HRESULT (WINAPI * PFN_Install) (HIUENGINE hIUEngine, BSTR bstrXmlClientInfo, BSTR bstrXmlCatalog, BSTR bstrXmlDownloadedItems, LONG lMode, IUnknown* punkProgressListener, HWND hWnd, BSTR* pbstrXmlItems); typedef HRESULT (WINAPI * PFN_InstallAsync) (HIUENGINE hIUEngine, BSTR bstrXmlClientInfo, BSTR bstrXmlCatalog, BSTR bstrXmlDownloadedItems, LONG lMode, IUnknown* punkProgressListener, HWND hWnd, BSTR bstrUuidOperation, BSTR* pbstrUuidOperation); typedef HRESULT (WINAPI * PFN_SetOperationMode)(HIUENGINE hIUEngine, BSTR bstrUuidOperation, LONG lMode); typedef HRESULT (WINAPI * PFN_GetOperationMode)(HIUENGINE hIUEngine, BSTR bstrUuidOperation, LONG* plMode); typedef HRESULT (WINAPI * PFN_GetHistory)(HIUENGINE hIUEngine, BSTR bstrDateTimeFrom, BSTR bstrDateTimeTo, BSTR bstrClient, BSTR bstrPath, BSTR* pbstrLog); typedef HRESULT (WINAPI * PFN_BrowseForFolder)( HIUENGINE hIUEngine, BSTR bstrStartFolder, LONG flag, BSTR* pbstrFolder); typedef HRESULT (WINAPI * PFN_RebootMachine)(HIUENGINE hIUEngine); typedef void (WINAPI * PFN_ShutdownThreads) (void); typedef void (WINAPI * PFN_ShutdownGlobalThreads) (void); typedef HRESULT (WINAPI * PFN_CompleteSelfUpdateProcess)(); typedef HIUENGINE (WINAPI * PFN_CreateEngUpdateInstance)(); typedef void (WINAPI * PFN_DeleteEngUpdateInstance)(HIUENGINE hIUEngine); typedef HRESULT (WINAPI * PFN_PingIUEngineUpdateStatus)( PHANDLE phQuitEvents, // ptr to handles for cancelling the operation UINT nQuitEventCount, // number of handles LPCTSTR ptszLiveServerUrl, LPCTSTR ptszCorpServerUrl, DWORD dwError, // error code LPCTSTR ptszClientName); // client name string ///////////////////////////////////////////////////////////////////////////// // // CDM typedefs // // used to delegate calls to engine (IUEngine.dll) from stub ([IU]cdm.dll) ///////////////////////////////////////////////////////////////////////////// // DetFilesDownloaded typedef void (WINAPI * PFN_InternalDetFilesDownloaded)( IN HANDLE hConnection ); // DownloadGetUpdatedFiles typedef BOOL (WINAPI * PFN_InternalDownloadGetUpdatedFiles)( IN PDOWNLOADINFOWIN98 pDownloadInfoWin98, IN OUT LPTSTR lpDownloadPath, IN UINT uSize ); // DownloadUpdatedFiles typedef BOOL (WINAPI * PFN_InternalDownloadUpdatedFiles)( IN HANDLE hConnection, IN HWND hwnd, IN PDOWNLOADINFO pDownloadInfo, OUT LPWSTR lpDownloadPath, IN UINT uSize, OUT PUINT puRequiredSize ); // FindMatchingDriver typedef BOOL (WINAPI * PFN_InternalFindMatchingDriver)( IN HANDLE hConnection, IN PDOWNLOADINFO pDownloadInfo, OUT PWUDRIVERINFO pWuDriverInfo ); // LogDriverNotFound typedef void (WINAPI * PFN_InternalLogDriverNotFound)( IN HANDLE hConnection, IN LPCWSTR lpDeviceInstanceID, IN DWORD dwFlags ); // QueryDetectionFiles typedef int (WINAPI * PFN_InternalQueryDetectionFiles)( IN HANDLE hConnection, IN void* pCallbackParam, IN PFN_QueryDetectionFilesCallback pCallback ); // InternalSetGlobalOfflineFlag typedef void (WINAPI * PFN_InternalSetGlobalOfflineFlag)( IN BOOL fOfflineMode ); ///////////////////////////////////////////////////////////////////////////// // // Misc. typedefs // ///////////////////////////////////////////////////////////////////////////// // DeleteExpiredDownloadFolders typedef void (WINAPI * PFN_AsyncExtraWorkUponEngineLoad)(); ///////////////////////////////////////////////////////////////////////////// // custom message ID defintions ///////////////////////////////////////////////////////////////////////////// #define UM_EVENT_ITEMSTART WM_USER + 1001 #define UM_EVENT_PROGRESS WM_USER + 1002 #define UM_EVENT_COMPLETE WM_USER + 1003 #define UM_EVENT_SELFUPDATE_COMPLETE WM_USER + 1004 ///////////////////////////////////////////////////////////////////////////// // event data structure definition ///////////////////////////////////////////////////////////////////////////// typedef struct _EventData { BSTR bstrUuidOperation; VARIANT_BOOL fItemCompleted; BSTR bstrProgress; LONG lCommandRequest; BSTR bstrXmlData; HANDLE hevDoneWithMessage; } EventData, *pEventData; BOOL WUPostEventAndBlock(HWND hwnd, UINT Msg, EventData *pevtData); #endif //__IU_H_