214 lines
6.6 KiB
C
214 lines
6.6 KiB
C
|
// base IU header
|
||
|
|
||
|
#ifndef __IU_H_
|
||
|
#define __IU_H_
|
||
|
|
||
|
#include <setupapi.h>
|
||
|
#include <advpub.h>
|
||
|
#include <windows.h>
|
||
|
#include <wtypes.h>
|
||
|
#include <urllogging.h>
|
||
|
//
|
||
|
// cdm.h is checked in as //depot/Lab04_N/enduser/published/inc/cdm.w and
|
||
|
// published to $(BASEDIR)\public\internal\enduser\inc
|
||
|
//
|
||
|
#include <cdm.h>
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// 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_
|