NDIS I/O 작업 항목
드라이버는 나중에 실행하기 위해 I/O 작업 항목 콜백 함수를 큐에 대기할 수 있습니다. NDIS는 IRQL = PASSIVE_LEVEL 드라이버 지정 콜백 함수를 호출합니다. 이렇게 하면 현재 함수가 즉시 반환되고 드라이버가 나중에 더 낮은 IRQL에서 작업을 수행할 수 있도록 하여 시스템 성능이 향상됩니다.
NDIS 6.0 이상에서는 커널 I/O 작업 항목 루틴 IoAllocateWorkItem, IoFreeWorkItem 및 IoQueueWorkItem에 대한 래퍼 함수를 제공합니다. NDIS는 프라이빗 IO_WORKITEM 구조 대신 프라이빗 NDIS_IO_WORKITEM 구조를 사용합니다.
NDIS 6.0 드라이버는 NdisAllocateIoWorkItem 함수를 호출하여 작업 항목을 할당합니다. NDIS 미니포트 드라이버는 NDIS가 MiniportInitializeEx 함수에 전달한 어댑터 핸들인 NdisAllocateIoWorkItem을 전달합니다. NdisAllocateIoWorkItem 은 핸들과 연결된 디바이스 개체를 가져오고 디바이스 개체를 IoAllocateWorkItem 루틴에 전달합니다. 필터 드라이버는 필터 핸들을 전달합니다.
참고 NDIS는 프로토콜 드라이버를 디바이스 개체와 연결하지 않으므로 프로토콜 드라이버는 NdisAllocateIoWorkItem 을 사용할 수 없습니다.
NDIS 드라이버는 NdisQueueIoWorkItem 함수를 호출하여 작업 항목을 큐에 추가합니다. NDIS 작업 항목은 CriticalWorkQueue 큐 유형을 사용합니다.
NDIS 드라이버는 NdisAllocateIoWorkItem 이 할당한 작업 항목과 연결된 리소스를 해제하려면 NdisFreeIoWorkItem 함수를 호출해야 합니다.