Share via


NdisAllocateBufferPool 함수(ndis.h)

참고 NDIS 5. x 는 더 이상 사용되지 않으며 NDIS 6으로 대체됩니다. x. 새로운 NDIS 드라이버 개발은 Windows Vista로 시작하는 네트워크 드라이버를 참조하세요. NDIS 5 포팅에 대한 자세한 내용입니다. x 드라이버를 NDIS 6으로. x, NDIS 5.x 드라이버를 NDIS 6.0으로 포팅을 참조하세요.

이 함수는 호출자가 NdisAllocateBuffer 함수를 호출하여 버퍼 설명자를 할당할 수 있는 핸들을 반환합니다.

구문

void NdisAllocateBufferPool(
  [out] PNDIS_STATUS Status,
  [out] PNDIS_HANDLE PoolHandle,
  [in]  UINT         NumberOfDescriptors
);

매개 변수

[out] Status

이 함수가 버퍼 풀 할당의 최종 상태 반환하는 호출자 제공 변수에 대한 포인터입니다.

[out] PoolHandle

이 함수가 버퍼 풀에 대한 핸들을 반환하는 호출자 제공 변수에 대한 포인터입니다. 이 핸들은 드라이버가 이후에 호출하는 NDIS 버퍼 함수에 필요한 매개 변수입니다.

[in] NumberOfDescriptors

할당된 버퍼 설명자를 풀로 다시 해제하지 않고 호출자가 버퍼 풀에서 할당해야 하는 버퍼 설명자 수를 지정합니다.

반환 값

없음

설명

항상 NDIS_STATUS_SUCCESS 반환합니다.

이 함수가 반환된 후 드라이버는 NdisAllocateBuffer 함수를 한 번 이상 호출하여 필요한 버퍼 설명자를 할당합니다. 드라이버는 초기화 중에 이 함수를 호출해야 합니다.

NIC 드라이버에서 지정한 NumberOfDescriptors 매개 변수는 일반적으로 NIC의 기능에 따라 달라집니다. 예를 들어 링 버퍼가 있는 버스 master DMA NIC의 드라이버는 전체 링을 매핑할 수 있을 만큼 충분히 큰 NumberOfDescriptors를 지정합니다.

이 함수 호출에 지정된 NumberOfDescriptors는 버퍼 풀의 무료 목록에 버퍼 설명자를 반환하기 위해 NdisFreeBuffer 함수를 호출하기 전에 드라이버가 NdisAllocateBuffer를 호출할 수 있는 횟수에 대한 유효 제한입니다.

드라이버에 할당된 버퍼 풀이 더 이상 필요하지 않은 경우 NdisFreeBufferPool 함수를 호출하여 버퍼 풀 핸들을 해제합니다.

드라이버는 이 함수를 호출하기 전에 보유하고 있는 스핀 잠금을 해제해야 합니다.

모든 하위 수준 NDIS 드라이버는 버퍼 풀에서 패킷에 연결하는 모든 버퍼 설명자를 할당해야 합니다. 최고 수준의 프로토콜 드라이버만 가상 메모리 범위를 매핑하는 OS 종속 설명자를 지정할 수 있습니다. 이러한 메모리 설명자가 NDIS 버퍼 설명자와 동일한 경우 최상위 프로토콜은 이러한 설명자를 매개 변수로 NDIS 함수에 전달할 수 있습니다.

OS 버전: .NET 4.0 이상을 Windows CE.

요구 사항

요구 사항
헤더 ndis.h
IRQL IRQL <= DISPATCH_LEVEL

추가 정보