xpmgr/BuildTools/Include/napcommon.idl

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