A hardverprofil olyan utasításkészlet, amely azt közli a Windows operációs rendszerrel, hogy mely eszközöket kell elindítania a számítógép elindításakor, illetve, hogy milyen beállításokkal használja az egyes eszközöket. A Windows első telepítésekor létrejön egy Profil 1 nevű hardverprofil (hordozható gépeknél a Dokkolt profil vagy a Nem dokkolt). A Profil 1 nevű hardverprofilban alapértelmezés szerint a Windows telepítésekor a számítógépre telepített összes eszköz engedélyezve van.
A hardverprofilok használata különösen hordozható számítógépek esetében nyújt komoly segítséget. A legtöbb hordozható számítógépet több helyen használják, és a hardverprofilok segítségével módosítható, hogy milyen eszközöket használjon a számítógép az egyik vagy a másik helyen. Létrehozhat például egy Dokkoló-egység konfiguráció nevű profilt, amelyet akkor használ, ha a számítógép olyan dokkoló-egységhez kapcsolódik, amelyen CD-ROM meghajtó, hálózati csatolókártya és más hardvereszközök is elérhetők. Emellett lehet egy másik profilja, mondjuk Önálló konfiguráció néven, amelyet akkor vehet igénybe, ha a számítógépet szállodában vagy repülőgépen használja, és nem használ hozzá hálózati csatolót vagy CD-ROM meghajtót, de modemet és hordozható nyomtatót igen.
Ha egynél több hardverprofilja van, megadhatja, hogy melyik legyen az alapértelmezett. A számítógép indításakor ezután azt használja az operációs rendszer. Az is beállítható, hogy a Windows minden indításkor megkérdezze, hogy melyik profilt használja. Hardverprofil készítésekor az Eszközkezelő segítségével tudja a benne lévő eszközöket engedélyezni vagy letiltani. A hardverprofilban letiltott eszközök illesztő-programjai a számítógép indításakor nem töltődnek be.
Az aktuális hardverprofil információit a következő függvény segítségével tudjuk lekérdezni.

GetCurrentHwProfile
BOOL GetCurrentHwProfile(
LPHW_PROFILE_INFO lpHwProfileInfo
);
Paraméterek
LPHW_PROFILE_INFO lpHwProfileInfo
Mutató, ami egy HW_PROFILE_INFO struktúrára utal, amely információkat szolgáltat az aktuális hardverprofilról.
Visszatérési érték
Amennyiben a függvényhívás sikeres, egy nem nulla értéket kapunk eredményül.
Amennyiben nem sikerült a függvényhívás, nullát kapunk.
A HW_PROFILE_INFO felépítése a következő:
typedef struct tagHW_PROFILE_INFO {
DWORD dwDockInfo;
TCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
TCHAR szHwProfileName[MAX_PROFILE_LEN];
} HW_PROFILE_INFO, *LPHW_PROFILE_INFO;
Paraméterek
DWORD dwDockInfo
A számítógép dokkolási állapotáról szolgáltat információt.
Az eredmény a következő bitértékek kombinációja lehet:
| DOCKINFO_DOCKED |
A számítógép dokkolt állapotban van. Asztali számítógépek esetén, melyek nem lehetnek hordozható állapotban, ez a flag állandóan be van állítva. |
| DOCKINFO_UNDOCKED |
A számítógép hordozható állapotban van, azaz nincs dokkolva. Asztali számítógépek esetén, melyek nem lehetnek hordozható állapotban, ez a flag állandóan be van állítva. |
| DOCKINFO_USER_SUPPLIED |
Ezen érték esetén a GetCurrentHwProfile függvény a jelenlegi dokkolási állapotra vonatkozó információkat a felhasználó által a Vezérlőpult -> Rendszer -> Hardver -> Hardverprofilok tulajdonságainál beállítottak szerint szolgáltatja. |
| A Windows NT 4.0 nem képes a dokkolási állapot ilyen jellegű megállapítására, ezért ezen operációs rendszer alatt ez az érték mindig be van állítva. |
| DOCKINFO_USER_DOCKED |
A számítógép dokkolva van. Az információt a felhasználó által beállított értékből veszi. Ez az érték kombinációja a DOCKINFO_USER_SUPPLIED és a DOCKINFO_DOCKED értékeinek. |
| DOCKINFO_USER_UNDOCKED |
A számítógép hordozható állapotban van. Az információt a felhasználó által beállított értékből veszi. Ez az érték kombinációja a DOCKINFO_USER_SUPPLIED és a DOCKINFO_UNDOCKED értékeinek. |
TCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]
Mutató, ami egy String típusú számsorozatra utal, mely egy, az aktuális hardverprofilra vonatkozó egyedi azonosító számot tartalmaz, amelyet GUID-nak (globally unique identifier) nevezünk. Ezt a számsorozat minden hardverprofil létrehozásakor a rendszer generálja és bekerül a Registry-be. A GUID idézőjel és kapcsos zárójelek között "{}" szerepel a GetCurrentHwProfile visszatérési értékében.
Mivel ez egy egyedi érték, lehetőségünk van arra, hogy felhasználjuk azt egy alkalmazás kulcsaként, a Registry HKEY_CURRENT_USER könyvtárában. Ezzel lehetőségünk nyílik arra, hogy a számítógépet használó összes felhasználó összes hardverprofiljának beállításait eltároljuk.
Ha például a Vezérlőpult Megjelenítés része ezt a kulcsot használja, képes lesz arra, hogy az összes felhasználó különböző hardverprofiljaiban beállított, a rendszerre vonatkozó megjelenítéseket eltárolja, mind dokkolt, mind hordozható állapotban. Azok az alkalmazások, melyek ezzel a funkcióval rendelkeznek, képesek az indításukkor leellenőrizni a hardverprofilok beállításait, és az aktuálisnak megfelelően módosítani a tulajdonságaikat. Szintén képesek felfrissíteni a beállításaikat akkor is, ha futtatásuk közben megváltoztatjuk az aktuális hardverprofil tulajdonságait. Mindehhez annyit kell tenni, hogy a Registry HKEY_CURRENT_USER könyvtár Control Panel alkönyvtárának Appearance részéhez új kulcsként felvesszük a GUID String-et.
TCHAR szHwProfileName[MAX_PROFILE_LEN]
Mutató, mely az aktuális hardverprofil nevét adja eredményként.
Visszatérési érték
Értékként a lekérdezett paraméter által szolgáltatott információt adja vissza.
Végül lássuk a mellékelt példaprogram működését.
Létrehoztunk három függvényt a három paraméter lekérdezéséhez.
A pInfo mindhárom esetben a TagHW_PROFILE_INFOA struktúrára mutat.
var
pInfo: TagHW_PROFILE_INFOA;
Az aktuális hardverprofil nevét a következőképp kapjuk meg:
function GettingHWProfileName: string;
begin
GetCurrentHwProfile(pInfo);
Result := pInfo.szHwProfileName;
end;
A hardverprofilhoz tartozó GUID értékét kérdezzük le a következő függvénnyel:
function GettingHWProfileGuid: string;
begin
GetCurrentHwProfile(pInfo);
Result := pInfo.szHwProfileGuid;
end;
Végül a dokkolás állapotára vonatkozó információk következnek:
function GettingHWDockInfo: Integer;
begin
GetCurrentHwProfile(pInfo);
Result := pInfo.dwDockInfo;
end;
Ezután nincs más dolgunk, mint kiíratni a kapott értékeket:
Label1.Caption:='Az aktuális hardverprofil neve: '+GettingHWProfileName;
Label2.Caption:='Az aktuális hardverprofil egyedi azonosító kódja (GUID): '+GettingHWProfileGuid;
Megvizsgáljuk, hogy mely flag-ek vannak beállítva, s ennek megfelelően íratjuk ki a dokkolásra vonatkozó üzenetet.
if GettingHWDockInfo and DOCKINFO_USER_DOCKED and DOCKINFO_USER_UNDOCKED <> 0 then
Label3.Caption:='A számítógép valószínűleg asztali számítógép, így mindig dokkolt állapotban van.';
Amennyiben a fenti kombináció nem nullát ad eredményként, valószínűleg a vizsgált gép egy asztali számítógép, hiszen ezek esetén mind a dokkolt, mind a hordozható állapotra vonatkozó flag be van állítva.
if GettingHWDockInfo and DOCKINFO_USER_SUPPLIED <> 0 then
Label4.Caption:='A dokkolási információkat a felhasználói beállításokból veszi a rendszer.';
Ha a DOCKINFO_USER_SUPPLIED flag értéket kapott, biztosan a felhasználó által a Vezérlőpulton beállított értékeket adja vissza a rendszer.
if GettingHWDockInfo and DOCKINFO_DOCKED <> 0 then
Label5.Caption:='A beállítások szerint a számítógép dokkolt állapotban van.'
else
Label5.Caption:='A beállítások szerint a számítógép hordozható állapotban van.';
A fenti flag attól függően kap értéket, hogy a gép dokkolt vagy hordozható állapotban van.
Próbáljuk ki, hogy a Vezérlőpult -> Rendszer -> Hardver -> Hardverprofilok ablakban manuálisan megváltoztatjuk az aktuális hardverprofil tulajdonságát, majd kérjük le újra a hardverprofil információit. A program a beállításoknak megfelelő értékeket fogja visszaadni.