다음을 통해 공유


복제된 NET_BUFFER_LIST 구조체

NDIS 드라이버는 기존 NET_BUFFER_LIST 구조체에서 복제된 NET_BUFFER_LIST 구조를 만듭니다. 복제된 구조체는 원래 구조체 데이터를 참조합니다. 드라이버는 이러한 유형의 구조를 사용하여 동일한 데이터를 여러 경로로 효율적으로 전송할 수 있습니다.

다음 그림에서는 부모 NET_BUFFER_LIST 구조체와 복제된 자식 구조체 간의 관계를 보여 줍니다.

부모 NET_BUFFER_LIST 구조체와 복제된 자식 구조체 간의 관계를 보여 주는 다이어그램

앞의 그림에는 부모 NET_BUFFER_LIST 구조체와 해당 부모에서 파생된 자식 구조체가 포함되어 있습니다. 부모 구조에는 하나의 NET_BUFFER_LIST_CONTEXT 구조체와 MDL이 연결된 NET_BUFFER 구조가 있습니다. 부모 구조체의 부모 포인터는 파생 구조체가 아님을 나타내는 NULL 입니다.

자식 NET_BUFFER_LIST 구조체에는 MDL이 연결된 하나의 NET_BUFFER 구조가 있습니다. 자식 NET_BUFFER_LIST 부모 구조체에 대한 포인터가 있습니다. NET_BUFFER_LIST_CONTEXT 구조체 포인터가 있는 NULL 은 자식에 NET_BUFFER_LIST_CONTEXT 구조체가 없음을 나타냅니다.

드라이버는 NdisAllocateCloneNetBufferList 함수를 호출하여 복제 NET_BUFFER_LIST 구조를 만듭니다. NDIS는 복제된 NET_BUFFER_LIST 구조체를 사용하여 새 NET_BUFFER 구조체 및 MDL을 할당합니다. NDIS는 복제된 구조체에 대한 NET_BUFFER_LIST_CONTEXT 구조를 할당하지 않습니다. 새 NET_BUFFER 구조체 및 MDL은 부모 구조와 동일한 데이터를 설명합니다. 데이터가 복사되지 않습니다.

드라이버는 NdisFreeCloneNetBufferList 함수를 호출하여 NET_BUFFER_LIST 구조체와 NdisAllocateCloneNetBufferList를 호출하여 이전에 할당된 모든 연결된 NET_BUFFER 구조체 및 MDL 체인을 해제합니다.

파생 NET_BUFFER_LIST 구조체