Cienko to widze.
Przede wszystkim system nie pozwoli Ci na nadpisanie IDT, co potrzebne jest do przekierowania obsługi przerwania do Twojej procedury. O ile dobrze pamiętam, to taki "włam" byl mozliwy w win9x (w IDT przekierowywalo się przerwanie na swoją procedure z dll, wywoływało je i dzięki temu można było zrobić coś w "rong 0") natomiast w win2000/XP jest to zablokowane.
Zadanie ktore chcesz wykonać noże zrobic tylko proces dzialający na w trybie najwyższego uprzywilejowania, czyli w windzie XP będzie to sterownik.
Dodatkowo system ten nie nadaje się do obsługi sprzętu i jego sterowniki to programistyczne potworki.
Światałkiem w tunelu być może będzie biblioteka WinIO. Zadaje się, ze poprzez swój sterownik udostępnia ona całą pamięć operacyjną i powinna pozwolić na zmodyfikowanie tablicy IDT.
Nie wiem tylko jak rozwiązac problem z dostępem do rejestru procesora w którym zapisany jest adres IDT. Możliwe że odczyt tego rejestru jest dozwolony dla zwykłej aplikacji, ale nie jestem tego pewny. Za to jego modyfikacja mozliwa jest tylko z poziomu sterowniak, ale Tobie to nie jest potrzebne.
Inna mozliwość - skożystać z komponentu DX dla delphi. Nie pamiętam jego nazwy, ale to była chyba DelphiX. To coś posiadało timer o minimalnym cyklu 1ms, ale nie powinienes spodziewać się dużej dokladności.
Warto też zastanowić się na napisniem wątki sprawdzającego HPT w pętli i generującego zdażenie gdy stan licznika osiągnie odpowiednią wartość, ale w tej chwili nie mam pamysłu jak to opisac w szczegółach.