Mein Gerätetreiber für einen PCIe FPGA auf 7600.16385.1 basiert \ src \ general \ PLX9x5xBegrenzung für NumberOfElements in Scatter/Gather-Liste
Nach ReadFile- in der Anwendung wird PLxEvtIoRead genannt:
//
// Initialize this new DmaTransaction.
//
status = WdfDmaTransactionInitializeUsingRequest(
devExt->ReadDmaTransaction,
Request,
PLxEvtProgramReadDma,
WdfDmaDirectionReadFromDevice);
//
// Execute this DmaTransaction.
//
status = WdfDmaTransactionExecute(devExt->ReadDmaTransaction,
WDF_NO_CONTEXT);
....
Upon calling to WdfDmaTransactionExecute, PLxEvtProgramReadDma is called.
BOOLEAN
PLxEvtProgramReadDma(
IN WDFDMATRANSACTION Transaction,
IN WDFDEVICE Device,
IN WDFCONTEXT Context,
IN WDF_DMA_DIRECTION Direction,
IN PSCATTER_GATHER_LIST SgList
)
{
KdPrint ((???SgList->NumberOfElements = %d\n???,SgList->NumberOfElements));
}
Das Problem: Ich möchte eine große Menge von Daten über diese Scatter/Gather-Liste (ca. 1 GB) übertragen, aber NumberOfElements scheint durch etwas begrenzt, irgendwie ist die große Übertragung 1MB (255 Element in der Liste, je 4k). i geändert MaximumTransfecrLength in Funktion unten zu 500MB:
WDF_DMA_ENABLER_CONFIG_INIT(&dmaConfig,
WdfDmaProfileScatterGatherDuplex,
deviceContext->MaximumTransferLength);
aber immer noch kann ich nicht mehr als 1 MB übertragen. Was ist die Sache, die NumberOfElements begrenzt und wie ich es lösen kann?