모든 Microsoft Windows 버전용 휴대용 드라이버를 작성하려면 여러 개의 동시 실행 프로세서가 있는 컴퓨터에서 안전하게 실행되도록 코드를 작성해야 합니다. 네트워크 드라이버는 다중 프로세서로부터 안전해야 하며 제공된 NDIS 라이브러리 함수를 사용해야 합니다.
단일 프로세서 환경에서는 패킷이 도착할 때 또는 타이머 인터럽트 발생 시 NIC(네트워크 인터페이스 카드) 또는 다른 디바이스가 현재 실행 스트림을 중단할 수 있더라도 단일 프로세서는 한 번에 하나의 컴퓨터 명령만 실행합니다. 일반적으로 패킷 큐와 같은 데이터 구조를 조작할 때 드라이버는 NIC에서 인터럽트를 사용하지 않도록 설정하고 조작을 수행한 다음 인터럽트를 다시 활성화합니다. 유니프로세서 환경의 많은 스레드는 동시에 실행되는 것처럼 보이지만 실제로는 인터리브된 시간 조각에서 실행됩니다.
다중 프로세서 환경에서 프로세서는 동시에 여러 컴퓨터 지침을 실행합니다. 한 드라이버 함수가 공통 데이터 구조를 조작할 때 다른 프로세서의 동일하거나 다른 드라이버 함수가 공유 데이터를 동시에 수정하지 않도록 드라이버는 동기화해야 합니다. 모든 드라이버 코드는 대칭형 다중 프로세서(SMP) 컴퓨터에서 재입력 가능합니다. 이 리소스 보호 문제를 제거하기 위해 Windows 디바이스 드라이버는 스핀 잠금을 사용합니다. 자세한 내용은 네트워크 드라이버 동기화 및 알림을 참조하세요.