mirror of https://github.com/UMSKT/xpmgr.git
422 lines
7.6 KiB
C
422 lines
7.6 KiB
C
/*++
|
|
|
|
Copyright (c) 2006 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
WdsClientApi.h
|
|
|
|
Abstract:
|
|
|
|
WDS Client API public header file.
|
|
|
|
Environment:
|
|
|
|
User Mode
|
|
|
|
--*/
|
|
#ifndef __WDSCLIENTAPI_H__
|
|
#define __WDSCLIENTAPI_H__
|
|
|
|
#if (_MSC_VER > 1000)
|
|
#pragma once
|
|
#endif
|
|
|
|
#define WDSCLIAPI WINAPI
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
//
|
|
// Structures
|
|
//
|
|
|
|
|
|
// Credentials structure.
|
|
//
|
|
typedef struct tagWDS_CLI_CRED
|
|
{
|
|
PCWSTR pwszUserName,
|
|
pwszDomain,
|
|
pwszPassword;
|
|
} WDS_CLI_CRED, *PWDS_CLI_CRED, *LPWDS_CLI_CRED;
|
|
|
|
|
|
//
|
|
// General functions
|
|
//
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliClose(
|
|
__in HANDLE Handle );
|
|
|
|
|
|
typedef
|
|
VOID
|
|
(WDSCLIAPI *PFN_WdsCliTraceFunction)(
|
|
__in LPCWSTR pwszFormat,
|
|
__in va_list Params
|
|
);
|
|
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliRegisterTrace(
|
|
__in_opt PFN_WdsCliTraceFunction pfn );
|
|
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliFreeStringArray(
|
|
__inout_ecount_opt(ulCount) PWSTR *ppwszArray,
|
|
__in ULONG ulCount );
|
|
|
|
//
|
|
// Image enumeration functions
|
|
//
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliFindFirstImage(
|
|
__in HANDLE hSession,
|
|
__out PHANDLE phFindHandle );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliFindNextImage(
|
|
__in HANDLE Handle );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetEnumerationFlags(
|
|
__in HANDLE Handle,
|
|
__out PDWORD pdwFlags );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageHandleFromFindHandle(
|
|
__in HANDLE FindHandle,
|
|
__out PHANDLE phImageHandle );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageHandleFromTransferHandle(
|
|
__in HANDLE hTransfer,
|
|
__out PHANDLE phImageHandle );
|
|
|
|
|
|
//
|
|
// Image enumeration constants
|
|
//
|
|
|
|
enum
|
|
{
|
|
WdsCliFlagEnumFilterVersion = 0x0001,
|
|
WdsCliFlagEnumFilterFirmware = 0x0002,
|
|
};
|
|
|
|
//
|
|
// Image Type constants.
|
|
//
|
|
typedef enum _WDS_CLI_IMAGE_TYPE
|
|
{
|
|
WDS_CLI_IMAGE_TYPE_UNKNOWN = 0,
|
|
WDS_CLI_IMAGE_TYPE_WIM,
|
|
WDS_CLI_IMAGE_TYPE_VHD
|
|
} WDS_CLI_IMAGE_TYPE, *PWDS_CLI_IMAGE_TYPE;
|
|
|
|
//
|
|
// Firmware Types.
|
|
//
|
|
typedef enum _WDS_CLI_FIRMWARE_TYPE
|
|
{
|
|
WDS_CLI_FIRMWARE_UNKNOWN = 0,
|
|
WDS_CLI_FIRMWARE_BIOS = 0x0001,
|
|
WDS_CLI_FIRMWARE_EFI = 0x0002,
|
|
} WDS_CLI_FIRMWARE_TYPE, *PWDS_CLI_FIRMWARE_TYPE;
|
|
|
|
//
|
|
// Extended Image Parameters.
|
|
//
|
|
typedef enum _WDS_CLI_IMAGE_PARAM_TYPE
|
|
{
|
|
WDS_CLI_IMAGE_PARAM_UNKNOWN = 0,
|
|
WDS_CLI_IMAGE_PARAM_SPARSE_FILE,
|
|
WDS_CLI_IMAGE_PARAM_SUPPORTED_FIRMWARES,
|
|
} WDS_CLI_IMAGE_PARAM_TYPE, *PWDS_CLI_IMAGE_PARAM_TYPE;
|
|
|
|
//
|
|
// Session functions
|
|
//
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliCreateSession(
|
|
__in PWSTR pwszServer,
|
|
__in_opt PWDS_CLI_CRED pCred,
|
|
__out PHANDLE phSession );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliAuthorizeSession(
|
|
__inout HANDLE hSession,
|
|
__in_opt PWDS_CLI_CRED pCred );
|
|
|
|
//
|
|
// Client -> Server Logging functions
|
|
//
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliInitializeLog(
|
|
__in HANDLE hSession,
|
|
__in ULONG ulClientArchitecture,
|
|
__in PWSTR pwszClientId,
|
|
__in PWSTR pwszClientAddress );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliLog(
|
|
__in HANDLE hSession,
|
|
__in ULONG ulLogLevel,
|
|
__in ULONG ulMessageCode,
|
|
... );
|
|
|
|
//
|
|
// Log events sent by the client to the server.
|
|
// Each one of these has a set of variables associated with it
|
|
// that must be present in the request in order for the request to be
|
|
// considered valid.
|
|
//
|
|
typedef enum
|
|
{
|
|
WDS_LOG_TYPE_CLIENT_ERROR = 1,
|
|
WDS_LOG_TYPE_CLIENT_STARTED,
|
|
WDS_LOG_TYPE_CLIENT_FINISHED,
|
|
WDS_LOG_TYPE_CLIENT_IMAGE_SELECTED,
|
|
WDS_LOG_TYPE_CLIENT_APPLY_STARTED,
|
|
WDS_LOG_TYPE_CLIENT_APPLY_FINISHED,
|
|
WDS_LOG_TYPE_CLIENT_GENERIC_MESSAGE,
|
|
WDS_LOG_TYPE_CLIENT_UNATTEND_MODE,
|
|
WDS_LOG_TYPE_CLIENT_TRANSFER_START,
|
|
WDS_LOG_TYPE_CLIENT_TRANSFER_END,
|
|
WDS_LOG_TYPE_CLIENT_TRANSFER_DOWNGRADE,
|
|
WDS_LOG_TYPE_CLIENT_DOMAINJOINERROR,
|
|
WDS_LOG_TYPE_CLIENT_POST_ACTIONS_START,
|
|
WDS_LOG_TYPE_CLIENT_POST_ACTIONS_END,
|
|
WDS_LOG_TYPE_CLIENT_APPLY_STARTED_2,
|
|
WDS_LOG_TYPE_CLIENT_APPLY_FINISHED_2,
|
|
WDS_LOG_TYPE_CLIENT_DOMAINJOINERROR_2,
|
|
WDS_LOG_TYPE_CLIENT_DRIVER_PACKAGE_NOT_ACCESSIBLE,
|
|
WDS_LOG_TYPE_CLIENT_OFFLINE_DRIVER_INJECTION_START,
|
|
WDS_LOG_TYPE_CLIENT_OFFLINE_DRIVER_INJECTION_END,
|
|
WDS_LOG_TYPE_CLIENT_OFFLINE_DRIVER_INJECTION_FAILURE,
|
|
WDS_LOG_TYPE_CLIENT_IMAGE_SELECTED2, // Only add entries before WDS_LOG_TYPE_CLIENT_MAX_CODE.
|
|
WDS_LOG_TYPE_CLIENT_MAX_CODE
|
|
};
|
|
|
|
//
|
|
// Log levels.
|
|
//
|
|
typedef enum
|
|
{
|
|
WDS_LOG_LEVEL_DISABLED = 0,
|
|
WDS_LOG_LEVEL_ERROR = 1,
|
|
WDS_LOG_LEVEL_WARNING = 2,
|
|
WDS_LOG_LEVEL_INFO = 3
|
|
};
|
|
|
|
//
|
|
// Image information functions
|
|
//
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageName(
|
|
__in HANDLE hIfh,
|
|
__out PWSTR *ppwszValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageDescription(
|
|
__in HANDLE hIfh,
|
|
__out PWSTR *ppwszValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageType(
|
|
__in HANDLE hIfh,
|
|
__out PWDS_CLI_IMAGE_TYPE pImageType );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageFiles(
|
|
__in HANDLE hIfh,
|
|
__deref_out_ecount(*pdwCount) LPWSTR **pppwszFiles,
|
|
__out PDWORD pdwCount );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageLanguage(
|
|
__in HANDLE hIfh,
|
|
__out PWSTR *ppwszValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageLanguages(
|
|
__in HANDLE hIfh,
|
|
__out_ecount(*pdwNumValues) PTSTR **pppszValues,
|
|
__out PDWORD pdwNumValues );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageVersion(
|
|
__in HANDLE hIfh,
|
|
__out PWSTR *ppwszValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImagePath(
|
|
__in HANDLE hIfh,
|
|
__out PWSTR *ppwszValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageIndex(
|
|
__in HANDLE hIfh,
|
|
__out PDWORD pdwValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageArchitecture(
|
|
__in HANDLE hIfh,
|
|
__out PDWORD pdwValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageLastModifiedTime(
|
|
__in HANDLE hIfh,
|
|
__out PSYSTEMTIME *ppSysTimeValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageSize(
|
|
__in HANDLE hIfh,
|
|
__out PULONGLONG pullValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageHalName(
|
|
__in HANDLE hIfh,
|
|
__out PWSTR *ppwszValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageGroup(
|
|
__in HANDLE hIfh,
|
|
__out PWSTR *ppwszValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageNamespace(
|
|
__in HANDLE hIfh,
|
|
__out PWSTR *ppwszValue );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetImageParameter(
|
|
__in HANDLE hIfh,
|
|
__in WDS_CLI_IMAGE_PARAM_TYPE ParamType,
|
|
__out_bcount(uResponseLen) PVOID pResponse,
|
|
__in ULONG uResponseLen );
|
|
|
|
//
|
|
// Image transfer functions.
|
|
//
|
|
|
|
// Callback function
|
|
//
|
|
|
|
typedef
|
|
VOID
|
|
(WDSCLIAPI *PFN_WdsCliCallback)(
|
|
DWORD dwMessageId,
|
|
__in_opt WPARAM wParam,
|
|
__in_opt LPARAM lParam,
|
|
__in_opt PVOID pvUserData );
|
|
|
|
// Callback messages.
|
|
//
|
|
typedef enum
|
|
{
|
|
WDS_CLI_MSG_START = 0,
|
|
WDS_CLI_MSG_COMPLETE,
|
|
WDS_CLI_MSG_PROGRESS,
|
|
WDS_CLI_MSG_TEXT,
|
|
};
|
|
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliGetTransferSize(
|
|
__in HANDLE hIfh,
|
|
__out PULONGLONG pullValue );
|
|
|
|
// Flags for transfer functions
|
|
//
|
|
#define WDS_CLI_TRANSFER_ASYNCHRONOUS 0x00000001
|
|
#define WDS_CLI_NO_SPARSE_FILE 0x00000002
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliTransferImage(
|
|
__in HANDLE hImage,
|
|
__in PWSTR pwszLocalPath,
|
|
__in DWORD dwFlags,
|
|
__in DWORD dwReserved,
|
|
__in_opt PFN_WdsCliCallback pfnWdsCliCallback,
|
|
__in_opt PVOID pvUserData,
|
|
__out PHANDLE phTransfer );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliTransferFile(
|
|
__in PCWSTR pwszServer,
|
|
__in PCWSTR pwszNamespace,
|
|
__in PCWSTR pwszRemoteFilePath,
|
|
__in PCWSTR pwszLocalFilePath,
|
|
__in DWORD dwFlags,
|
|
__in DWORD dwReserved,
|
|
__in_opt PFN_WdsCliCallback pfnWdsCliCallback,
|
|
__in_opt PVOID pvUserData,
|
|
__out PHANDLE phTransfer );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliCancelTransfer(
|
|
__in HANDLE hTransfer );
|
|
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliWaitForTransfer(
|
|
__in HANDLE hTransfer );
|
|
|
|
//
|
|
// Dynamic Driver Provisioning functions
|
|
//
|
|
HRESULT
|
|
WDSCLIAPI
|
|
WdsCliObtainDriverPackages(
|
|
__in HANDLE hImage,
|
|
__deref_out PWSTR *ppwszServerName,
|
|
__deref_out_ecount(*pulCount) PWSTR **pppwszDriverPackages,
|
|
__out ULONG *pulCount
|
|
);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // __WDSCLIENTAPI_H__
|
|
|