다음을 통해 공유


공유 메모리 리소스 할당

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_PARAMETERSNDIS_SCATTER_GATHER_LIST_PARAMETERS 구조에 사용됩니다. VMQ 수신 데이터 버퍼의 공유 메모리 매개 변수에 대한 자세한 내용은 수신 버퍼의 공유 메모리를 참조하세요.

NdisAllocateSharedMemory 함수는 호출자에게 다음을 제공합니다.

  • 할당된 메모리의 가상 주소입니다.

  • 분산형 수집 목록입니다.

  • 공유 메모리 핸들 - 수신 표시용입니다.

  • 할당 핸들 - 나중에 메모리를 식별하는 데 사용됩니다.

미니포트 드라이버는 NdisFreeSharedMemory 함수를 호출하여 큐에 대한 공유 메모리를 해제합니다. 미니포트 드라이버가 기본이 아닌 큐에 공유 메모리를 할당한 경우 큐를 해제하는 동안 OID_RECEIVE_FILTER_FREE_QUEUE OID의 컨텍스트에서 공유 메모리를 해제합니다. MiniportHaltEx 함수의 컨텍스트에서 기본 큐에 할당된 공유 메모리를 최소화합니다.