2013-08-20 2 views
1

우리는 윈도우 7메모리 정렬 (Windows 드라이버 파운데이션)

에 대한 WDF를 사용하여 만든 PCI 익스프레스 장치를 사용자 정의에 대한 DMA 기반 드라이버를 작성하는 경우, PCI-Express 버스 트랜잭션을다시피 4k 메모리 경계를 넘을 수 없습니다. 커스텀 디바이스는 이것을 체크하지 않기 때문에, 드라이버는 단지 4k 메모리 경계에 정렬 된 DMA 전송만을 요구할 필요가있다.

장치의 프로필은 WdfDmaProfilePacket64입니다.

WdfDeviceSetAlignmentRequirement (DevExt-> Device, 4095)를 사용하여 시도했지만 DMA 시작 주소가 올바르게 정렬되지 않았습니다.

올바르게 정렬 된 주소 만 요청하도록 WDF 프레임 워크를 구성하려면 어떻게해야합니까?

답변

0

사용자 공간 응용 프로그램에서이를 처리 할 수 ​​있습니다. 사용자 공간에서 정렬 된 메모리를 시작/할당 한 다음 커널 프로그램으로 보냅니다. 드라이버가 이미 할당하고 시작한 메모리를 정렬하는 것은 쉽지 않습니다. 심지어 사용자 공간 응용 프로그램에서 우리는 여분의 공간을 할당 한 다음 정렬 된 부분을 사용해야합니다. (나는 알지 못합니다. 그래서이 문제를 장치 측면에서 해결하는 것이 좋습니다.)

예를 들어 C++을 사용하는 경우 사용자 공간 응용 프로그램과 같은 것을 할 수 있습니다. this