CMOS, jak jistě mnozí víte, je paměť - BIOS. A co jsou porty,
je snad jasné každému (tiskárna, sériák, USB ...).

Na porty se přistupuje tak, pomocí funkce zapisujete / čtete bajt z určité adresy.
K tomu slouží funkce ze souboru conio.h :

outp(int, int);

V developer studiu se to jmenuje takhle :

_outp(int, int);

Dáme si example zápisu desítky na adresu 0x71 (tam se rozkládá BIOS) :


_outp(0x71, 10);   // zápis hodnoty 10 na adresu 0x01
Potom adekvátně funkce pro čtení : inp(int, int); A microsofská : _inp(int, int); A teď už můžete zapisovat, směle do toho. Hlavně nikdy nezapisujte nic nikam, kam nevíte a proto tu mám jeden jednoduchý program ...

#include <conio.h>
#include <stdio.h>

int main()
{
    printf("Tento program vám smaže heslo z BIOS\n);

    _outp(0x71, 0x10); // zápis hodnoty 0x10 na adresu 0x70
    _outp(0x71, 0xff); // zápis hodnoty 0xff na adresu 0x71

    return 1;
}
Tento program odmaže heslo ze setupu zapsáním dvou hodnot do vaší CMOS paměti. (Ať žije Mr. Lang !) Úplně stejné je to s porty, s tím, že adresa paralelního portu je 0x381 (LPT1) a 0x271 (LPT2) můžete zapisovat i do sériáku, beeperu a jiných hovadin. Jenom tyhle funkce nebudou fungovat pod WinNT, tam musíte použít speciální API. API musíte použít taky pro USB port a tak. Vlastně tenhle přístup na porty se už moc nepoužívá, leda byste chtěli něco pomocí počítače ovládat. -tHE SWINe-
Zpátky