고급 작업
고급 작업은 NET_BUFFER 구조 또는 NET_BUFFER_LIST 구조의 모든 NET_BUFFER 구조에서 사용된 데이터 공간의 크기를 줄입니다.
드라이버는 다음과 같은 고급 함수를 사용합니다.
NdisAdvanceNetBufferListDataStart
고급 작업은 경우에 따라 NET_BUFFER 구조와 연결된 MDL을 해제할 수 있습니다. MDL을 해제하는 메커니즘을 제공하기 위해 드라이버는 NetFreeMdl 함수에 대한 선택적 진입점을 제공할 수 있습니다. 진입점이 NULL인 경우 NDIS는 기본 메서드를 사용하여 MDL을 할당합니다. MDL은 NetAllocateMdl 함수에서 MDL 을 할당하는 데 사용된 메커니즘의 상호를 사용하여 NetFreeMdl 내에서만 해제되어야 합니다.
새 DataLength를 가져오기 위해 NDIS는 현재 DataLength 에서 드라이버 지정 DataOffsetDelta를 뺍니다. 이전 퇴각 작업에서 새 데이터 공간을 할당한 경우 사전 작업은 이전에 할당된 메모리를 해제할 수 있습니다. 사전 작업이 메모리를 해제하지 않으면 NDIS는 DataOffsetDelta 를 현재 DataOffset 에 추가하여 새 DataOffset 를 가져옵니다. 사전 작업으로 메모리가 해제되면 NDIS는 DataOffset 을 적절하게 조정합니다.
보내기 전체 사례의 경우 고급 작업은 이전 퇴각 작업에서 할당된 메모리를 해제할 수 있습니다. 성능을 향상시키려면 드라이버는 모든 기본 드라이버의 퇴각 작업을 수용하기 위해 보내기 전에 충분한 총 데이터 크기를 할당해야 합니다.
수신 표시 사례의 경우 고급 작업은 DataOffset 및 DataLength 를 적절하게 조정하기만 하면 됩니다. 사전 작업 후에는 하위 계층의 헤더가 사용되지 않는 데이터 공간에 유지됩니다.