공유 메모리 리소스 할당
VM 큐에 공유 메모리 리소스를 할당하기 위해 미니포트 드라이버는 NdisAllocateSharedMemory 함수를 호출합니다. 예를 들어 미니포트 드라이버는 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID를 받을 때 공유 메모리를 할당합니다. 또한 미니포트 드라이버는 네트워크 어댑터를 초기화하는 동안 기본 큐에 공유 메모리를 할당할 수 있습니다. 큐 할당에 대한 자세한 내용은 VM 큐 할당을 참조하세요.
미니포트 드라이버는 큐가 해제될 때까지 큐에 더 많은 메모리를 할당할 수 있습니다. 큐 해제에 대한 자세한 내용은 VM 큐 해제를 참조하세요.
NDIS_SHARED_MEMORY_PARAMETERS 구조는 공유 메모리 할당 요청에 대한 공유 메모리 매개 변수를 지정합니다. 미니포트 드라이버는 이 구조를 NdisAllocateSharedMemory 함수에 전달합니다 . NDIS는 이 구조를 NetAllocateSharedMemory 함수(즉, ALLOCATE_SHARED_MEMORY_HANDLER 진입점)에 전달합니다.
미니포트 드라이버가 공유 메모리를 할당하는 경우 다음을 지정합니다.
큐 식별자입니다.
공유 메모리 길이입니다.
공유 메모리 사용 방법. 예를 들어 미니포트 드라이버는 공유 메모리를 수신 버퍼에 사용할 경우 NdisSharedMemoryUsageReceive 를 지정합니다.
NDIS_SHARED_MEM_PARAMETERS_CONTIGOUS 플래그가 Flags 멤버에 설정되지 않은 경우 인접하지 않은 메모리에 포함된 분산형 수집 목록에 공유 메모리를 지정할 수 있습니다.
NDIS_SHARED_MEMORY_USAGE 열거형은 공유 메모리 사용 방법을 지정합니다. NDIS_SHARED_MEMORY_USAGE 열거형은 NDIS_SHARED_MEMORY_PARAMETERS 및 NDIS_SCATTER_GATHER_LIST_PARAMETERS 구조에 사용됩니다. VMQ 수신 데이터 버퍼의 공유 메모리 매개 변수에 대한 자세한 내용은 수신 버퍼의 공유 메모리를 참조하세요.
NdisAllocateSharedMemory 함수는 호출자에게 다음을 제공합니다.
할당된 메모리의 가상 주소입니다.
분산형 수집 목록입니다.
공유 메모리 핸들 - 수신 표시용입니다.
할당 핸들 - 나중에 메모리를 식별하는 데 사용됩니다.
미니포트 드라이버는 NdisFreeSharedMemory 함수를 호출하여 큐에 대한 공유 메모리를 해제합니다. 미니포트 드라이버가 기본이 아닌 큐에 공유 메모리를 할당한 경우 큐를 해제하는 동안 OID_RECEIVE_FILTER_FREE_QUEUE OID의 컨텍스트에서 공유 메모리를 해제합니다. MiniportHaltEx 함수의 컨텍스트에서 기본 큐에 할당된 공유 메모리를 최소화합니다.