We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Windows-Driver-Frameworks/src/framework/kmdf/src/dma/base/fxdmatransactionbase.cpp
Line 924 in a94b8c3
To replicate, create a WDFDMAENABLER
#define COMMON_BUFFER_SIZE (4294967296-4096) WDF_DMA_ENABLER_CONFIG_INIT(&dma, WdfDmaProfileScatterGather64Duplex, COMMON_BUFFER_SIZE); dma.WdmDmaVersionOverride = 3; dma.Flags = WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION; status = WdfDmaEnablerCreate(device, &dma, WDF_NO_OBJECT_ATTRIBUTES, &context->Dma);
Use DmaRemappingCompatible as 1 in the .inf. Create a DomainCommonBuffer:
.inf
dma = WdfDmaEnablerWdmGetDmaAdapter(context->Dma, WdfDmaDirectionReadFromDevice); ops = dma->DmaOperations; domain = ops->GetDmaDomain(dma); type = MmCached; status = ops->AllocateDomainCommonBuffer(dma, domain, NULL, COMMON_BUFFER_SIZE, 0, &type, MM_ANY_NODE_OK, &context->LA, &context->Ptr); RtlZeroMemory(context->Ptr, COMMON_BUFFER_SIZE);
Create a MDL, pass it to WdfDmaTransactionInitialize
context->Mdl = IoAllocateMdl(NULL, COMMON_BUFFER_SIZE, FALSE, FALSE, NULL); MmInitializeMdl(context->Mdl, context->Ptr, COMMON_BUFFER_SIZE); MmBuildMdlForNonPagedPool(context->Mdl); status = WdfDmaTransactionInitialize(transaction, ScatterGatherEntry, WdfDmaDirectionReadFromDevice, context->Mdl, context->Ptr, COMMON_BUFFER_SIZE);
The runtime code is STATUS_BUFFER_TOO_SMALL. The expected result is STATUS_SUCCESS.
Using #define COMMON_BUFFER_SIZE (4294967296-8192) works.
#define COMMON_BUFFER_SIZE (4294967296-8192)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Windows-Driver-Frameworks/src/framework/kmdf/src/dma/base/fxdmatransactionbase.cpp
Line 924 in a94b8c3
To replicate, create a WDFDMAENABLER
Use DmaRemappingCompatible as 1 in the
.inf
.Create a DomainCommonBuffer:
Create a MDL, pass it to WdfDmaTransactionInitialize
The runtime code is STATUS_BUFFER_TOO_SMALL. The expected result is STATUS_SUCCESS.
Using
#define COMMON_BUFFER_SIZE (4294967296-8192)
works.The text was updated successfully, but these errors were encountered: