2014-07-16 2 views
1

내 FPGA를 매핑하는 커널 PnP 드라이버를 개발 중입니다. 비 분산 수집 DMA를 사용할 때 연속 메모리의 4 개의 32Mb 버퍼가 필요합니다. 지금은 때때로 WdfCommonBufferCreate와 함께 할당 할 때 문제가 있습니다. 때때로 작동하지 않는 경우도 있습니다. 장치 메모리와 장치가 변경되지 않아 할당이 산발적으로 실패하는 이유를 알 수 없습니다.대형 PnP 드라이버 버퍼

내 버퍼를 만들 수있는 방법이 있습니까? 산발적 인 실패의 원인은 무엇입니까?

또한 Bcdedit을 사용하여 Windows에서 128MB를 제거하고 내 버퍼 공간을 남겨 두었습니다. 드라이버가 제어 된 환경에서 특정 플랫폼을 사용하기 때문에 문제가 없지만 Windows 드라이버 API로 메모리 크기를 알 수있는 방법을 찾지 못했습니다.

실제 메모리 크기를 알 수있는 방법이 있습니까? 실제로 남은 메모리를 사용할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?

도움 주셔서 감사합니다.

답변

0

많은 연속 메모리가 있습니다. Windows Driver Framework는 WdfDmaEnablerSetMaximumScatterGatherElements을 통해 분산/수집 설명자를 최대로 말해 주면 드라이버가 처리 할 수있는 크기로 큰 DMA 트랜잭션을 분할 할 수 있습니다. 더 작은 수의 scatter/gather 요소를 사용하면됩니다.

관련 문제