Argg, my last response got lost due to auto-logout…
Yes, Peter, you are correct. I am attempting to transfer more than it tells me. Since I was able to transfer 2GB I was assuming (ha!) that the 1GB limit it told me didn’t really matter.
Upon further investigation, I have confirmed that my call to WDF_DMA_ENABLER_CONFIG_INIT() to set the MaxLength is only taking in a 4 byte param for MaxLength, not the 8 byte “size_t” as I expected. E.g. when I specify 4GB, I get back 0 bytes from WdfDmaEnablerGetMaximumLength(). When I specify 5GB, I get back 1GB… Could this be a bug? I can’t see what I am doing wrong here.
So, when I specify a MaxLength of 0xfffff000 (4GB - PAGE_SIZE), WdfDmaEnablerGetFragmentLength() gives me back 0x7ffff00 for 0x80000 map registers. This makes more sense as to the 2GB limit I am seeing.
Do I have any control over this? How can I make it bigger? Is this limit coming from OS or board?
Thanks-
Jeff