Технически говоря, все процессы имеют некоторые потоки, которые проводят некоторое время в режиме ядра (кольцо 0). Всякий раз, когда процесс пользовательского режима делает системный вызов в ОС, происходит переход, когда поток попадает в кольцо 0 через «гейт». Всякий раз, когда процессу необходимо связаться с устройством, выделить больше памяти для всего процесса или создать новые потоки, используется системный вызов, чтобы попросить ОС предоставить эту услугу.
Поэтому, если вы хотите, чтобы процесс выполнял некоторый код в кольце 0, вам нужно написать драйвер, а затем связаться с этим драйвером через несколько системных вызовов. Наиболее распространенный системный вызов для этого называется ioctl (расшифровывается как I / O Control).
Еще одна вещь, на которую стоит обратить внимание на платформе Windows, - это UMDF (платформа драйверов пользовательского режима). Это позволяет вам писать, отлаживать и тестировать драйвер в пользовательском режиме (работающем в кольце 3), но он все еще доступен для других драйверов или других процессов в системе.