SHV Module
Note
La plateforme De protection d’accès réseau n’est pas disponible à partir de Windows 10
Configure un module de validateur d’intégrité système (SHV), y compris l’inscription et l’annulation de l’inscription auprès du système NAP.
Note
Le SDK NAP contient également un ensemble complet d’exemples de code qui se trouvent dans ...\Samples\NetDS\NAP... répertoire de votre installation du Kit de développement logiciel (SDK). Cet exemple de jeu inclut un agent d’intégrité système (SHA), SHV et un client d’application (EC). Il propose des scénarios NAP complets qui configurent la communication entre SHA-SHV et SHA-EC.
#include <windows.h>
#include "stdafx.h"
#include "NapUtil.h"
static const wchar_t friendlyName[] = L"SDK SHV Sample";
static const wchar_t version[] = L"1.0.0.1";
static const wchar_t description[] = L"System Health Validator(SHV)";
static const wchar_t vendor[] = L"Microsoft";
/// Registers the SDK SHV with the NAP Server.
HRESULT RegisterSdkShv()
{
HRESULT hr = S_OK;
CComPtr<INapServerManagement> pSHVMgmt = NULL;
NapComponentRegistrationInfo shvInfo;
ZeroMemory (&shvInfo, sizeof(shvInfo));
hr = pSHVMgmt.CoCreateInstance(CLSID_NapServerManagement, NULL, CLSCTX_INPROC_SERVER);
hr = FillShvComponentRegistrationInfo(&shvInfo);
hr = pSHVMgmt->RegisterSystemHealthValidator(&shvInfo, (CLSID *)&__uuidof(CSampleShv));
FreeComponentRegistration(&shvInfo);
return hr;
}
/// Unregisters the SDK SHV with the NAP Server.
HRESULT UnregisterSdkShv()
{
HRESULT hr = S_OK;
CComPtr<INapServerManagement> pSHVMgmt = NULL;
hr = pSHVMgmt.CoCreateInstance(CLSID_NapServerManagement, NULL, CLSCTX_INPROC_SERVER);
hr = pSHVMgmt->UnregisterSystemHealthValidator(QuarSampleSystemHealthId);
return hr;
}
/// Fill the NapComponentRegistrationInfo structure that needs to be passed during registration.
HRESULT FillShvComponentRegistrationInfo (NapComponentRegistrationInfo *shvInfo)
{
HRESULT hr = S_OK;
shvInfo->id = QuarSampleSystemHealthId;
//<Temporarily till implement the Info Class>
shvInfo->infoClsid = GUID_NULL;
hr = ConstructCountedString(friendlyName, sizeof(friendlyName), &(shvInfo->friendlyName));
hr = ConstructCountedString(description, sizeof(description), &(shvInfo->description));
hr = ConstructCountedString(version, sizeof(version), &(shvInfo->version));
hr = ConstructCountedString(vendor, sizeof(vendor), &(shvInfo->vendorName));
return hr;
}
// Helper Function for FillShvComponentRegistrationInfo.
HRESULT ConstructCountedString(const WCHAR* src, UINT16 len, CountedString* dest)
{
HRESULT hr = S_OK;
DWORD retCode = ERROR_SUCCESS;
hr = AllocateMemory(dest->string, ((len+1)*sizeof(WCHAR)));
dest->length = len;
retCode = StringCchCopy(dest->string, len+1, src);
return hr;
}
// Helper Function for releasing ShaComponentRegistrationInfo members
void FreeComponentRegistration(NapComponentRegistrationInfo *shvInfo)
{
FreeMemory(shvInfo->friendlyName.string);
FreeMemory(shvInfo->description.string);
FreeMemory(shvInfo->version.string);
FreeMemory(shvInfo->vendorName.string);
}