может я что-то не понимаю, но банальное решение, через которое работают программаторы etc не подойдет? навроде dlportio.dll
оно вроде как раз работать в Ring 0 и все обращения к lpt перехватывать и обрабатывать самостоятельно