mirror of https://github.com/UMSKT/xpmgr.git
215 lines
6.5 KiB
Plaintext
215 lines
6.5 KiB
Plaintext
////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) Microsoft Corporation.
|
|
//
|
|
// SYNOPSIS
|
|
//
|
|
// IDL source for common interfaces.
|
|
//
|
|
////////////////////////////////////////////////////////////
|
|
|
|
#ifndef NAPCOMMON_IDL
|
|
#define NAPCOMMON_IDL
|
|
|
|
import "NapTypes.idl";
|
|
import "unknwn.idl";
|
|
|
|
|
|
// NAP plug-in components (such as SHAs and SHVs) must
|
|
// implement this interface so that the NAP system can
|
|
// retrieve static administrative-type information
|
|
// (eg. friendly name, localized strings, etc.)
|
|
//
|
|
[object,
|
|
uuid(B475F925-E3F7-414c-8C72-1CEE64B9D8F6),
|
|
pointer_default(unique)]
|
|
interface INapComponentInfo : IUnknown
|
|
{
|
|
// Used to get the friendly name, company name,
|
|
// version info and icon of health clients.
|
|
//
|
|
HRESULT
|
|
GetFriendlyName([out] MessageId* friendlyName) const;
|
|
HRESULT
|
|
GetDescription([out] MessageId* description) const;
|
|
HRESULT
|
|
GetVendorName([out] MessageId* vendorName) const;
|
|
HRESULT
|
|
GetVersion([out] MessageId* version) const;
|
|
|
|
// The icon should be localized according to the thread
|
|
// lang-id.
|
|
HRESULT
|
|
GetIcon(
|
|
[out] CountedString** dllFilePath,
|
|
[out] UINT32* iconResourceId
|
|
) const;
|
|
|
|
// Used to convert HRESULT to message id, which can then
|
|
// be used to retrieve a localized string.
|
|
//
|
|
HRESULT
|
|
ConvertErrorCodeToMessageId(
|
|
[in] HRESULT errorCode,
|
|
[out] MessageId* msgId
|
|
) const;
|
|
|
|
// Used to get localized strings. Strings should be
|
|
// localized to the thread's language-id.
|
|
//
|
|
HRESULT
|
|
GetLocalizedString(
|
|
[in] MessageId msgId,
|
|
[out] CountedString** string
|
|
) const;
|
|
};
|
|
|
|
|
|
// Currently, implemented by the SHVs only.
|
|
//
|
|
[object,
|
|
uuid(a9e0af1a-3713-478e-ae03-8edd272d21fa),
|
|
pointer_default(unique)]
|
|
interface INapComponentConfig : IUnknown
|
|
{
|
|
// Used to determine if the component supports
|
|
// custom UI.
|
|
//
|
|
HRESULT
|
|
IsUISupported([out] BOOL* isSupported) const;
|
|
|
|
// Used to launch the component specific UI
|
|
// Note:- The call should block until the UI exits
|
|
// and any updated config is persisted.
|
|
//
|
|
HRESULT
|
|
InvokeUI([in, unique] HWND hwndParent) const;
|
|
|
|
// Used to extract the configuration for
|
|
// migration purposes
|
|
// Any versioning information should be part of the
|
|
// byte blob
|
|
//
|
|
HRESULT
|
|
GetConfig(
|
|
[out] UINT16* bCount,
|
|
[out, size_is(, *bCount)] BYTE** data
|
|
) const;
|
|
|
|
// Used to set the configuration
|
|
//
|
|
HRESULT
|
|
SetConfig(
|
|
[in] UINT16 bCount,
|
|
[in, size_is(bCount)] BYTE* data
|
|
);
|
|
};
|
|
|
|
// Currently implemented by SHVs only.
|
|
// Used to manage remote configuration of SHVs
|
|
//
|
|
[object,
|
|
uuid(47cbdb9e-1972-4f5e-bd3c-5eb6230614b5),
|
|
pointer_default(unique)]
|
|
interface INapComponentConfig2 : INapComponentConfig
|
|
{
|
|
|
|
// If neither of InvokeUIForMachine and InvokeUIFromConfigBlob is
|
|
// implemented, remote configuration of the SHV is not possible
|
|
//
|
|
HRESULT
|
|
IsRemoteConfigSupported(
|
|
[out] BOOL* isSupported,
|
|
[out] UINT8* remoteConfigType
|
|
);
|
|
|
|
// Implemented by SHVs that want to manage the remote configuration
|
|
// directly on the machine specified
|
|
//
|
|
HRESULT
|
|
InvokeUIForMachine(
|
|
[in, unique] HWND hwndParent,
|
|
[in, unique] CountedString* machineName
|
|
);
|
|
|
|
// Implemented by SHVs that want to load the configuration on the
|
|
// remote/local machine in memory and display UI that can manipulate
|
|
// the data in memory. The outData parameter is used to return the
|
|
// modified data, and the flag fConfigChanged indicates if any
|
|
// changes were made in the configuration.
|
|
// The data passed in is the exported configuration on the remote/local
|
|
// machine and the data passed out will be imported on the remote/local
|
|
// machine.
|
|
// Note that if used for a local machine, this function can be used for
|
|
// Per Policy SHV Configuration. It provides a way to invoke SHV UI
|
|
// and edit an existing SHV configuration.
|
|
//
|
|
HRESULT
|
|
InvokeUIFromConfigBlob(
|
|
[in, unique] HWND hwndParent,
|
|
[in] UINT16 inbCount,
|
|
[in, size_is(inbCount)] BYTE* inData,
|
|
[out] UINT16* outbCount,
|
|
[out, size_is(, *outbCount)] BYTE** outdata,
|
|
[out] BOOL *fConfigChanged
|
|
);
|
|
};
|
|
|
|
// Currently implemented by SHVs only.
|
|
// Used to support multiple configuration
|
|
//
|
|
[object,
|
|
uuid(9C4A8101-8CFE-4332-876E-C4A49D1D3F77),
|
|
pointer_default(unique)]
|
|
interface INapComponentConfig3 : INapComponentConfig2
|
|
{
|
|
// NewConfig provides the way to create configuration for specific ConfigID.
|
|
// ConfigID is assigned by NPS Config and it's unique within the SHV.
|
|
// When this function is called, SHV must allocate a new configuration and
|
|
// populate it with a copy of the global configuration data.
|
|
// GetConfig, InvokeUIFromConfigBlob, and SetConfig will be used after
|
|
// when modifications are needed to the configuration
|
|
// If the ConfigID is 0 (a reserved value for global config), then
|
|
// E_INVALIDARG should be returned.
|
|
// If the ConfigID already exists, that means the list of IDs known to NPS
|
|
// is different from what SHV has. That would be a bug. In that case,
|
|
// NAP_E_SHV_CONFIG_EXISTED should be returned.
|
|
HRESULT
|
|
NewConfig(UINT32 configID);
|
|
|
|
// DeleteConfig provides the way to delete configuration for specific ConfigID.
|
|
// The ConfigID can be reused for other configurations after it has been deleted.
|
|
// If the ConfigID is 0 (a reserved value for global config), then
|
|
// E_INVALIDARG should be returned - global config must not be deleted.
|
|
// If ConfigID is not found, SHV should return NAP_E_SHV_CONFIG_NOT_FOUND.
|
|
HRESULT
|
|
DeleteConfig(UINT32 configID);
|
|
|
|
// DeleteAllConfig provides the way to reset SHV store to its original state after
|
|
// setup. All configurations except for the default configuration must be deleted.
|
|
HRESULT
|
|
DeleteAllConfig();
|
|
|
|
// GetConfig provides the way to obtain configuration for specific ConfigID from
|
|
// SHV. If 0 is used, SHV should return the global configuration. If ConfigID is
|
|
// not found, SHV should return NAP_E_SHV_CONFIG_NOT_FOUND
|
|
HRESULT
|
|
GetConfigFromID(
|
|
[in] UINT32 configID,
|
|
[out] UINT16* count,
|
|
[out, size_is(,*count)]BYTE** outdata
|
|
);
|
|
|
|
// SetConfig provides the way to set configuration for specific ConfigID.
|
|
// ConfigID is assigned by NPS Config and it's unique within the SHV. If ConfigID
|
|
// is not found, SHV should return NAP_E_SHV_CONFIG_NOT_FOUND
|
|
HRESULT
|
|
SetConfigToID(
|
|
[in] UINT32 configID,
|
|
[in] UINT16 count,
|
|
[in, size_is(count)]BYTE* data
|
|
);
|
|
};
|
|
#endif // NAPCOMMON_IDL
|
|
|