TdiAcceptComplete

I try to return STATUS_MORE_STATUS_PROCESSING from TdiAcceptComplete
function. Then I try to complete this IRP from some other thread.
It works but when I receive calls from NetBT the system crashes with
DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL

Stack :
netbt!AcceptCompletionRoutine+0x8
nt!IovpLocalCompletionRoutine+0xb2
nt!IopfCompleteRequest+0xa0
nt!IovCompleteRequest+0x90


I do nothing in TdiAcceptComplete… Just queue IRP.
And in the other thread do dequeue and IoCompleteRequest(pIrp)…

What am I missing ? Why NetBT crashes, but Afd works okay ?


Best regards,
foxgen mailto:xxxxx@yandex.ru

> I try to return STATUS_MORE_STATUS_PROCESSING from TdiAcceptComplete

function. Then I try to complete this IRP from some other thread.

Allocate the TDI_ACCEPT IRP by IoAllocateIrp, not by
TdiBuildInternalDeviceIoControl request.
Since you do not need any IRP postprocessing in TdiAcceptComplete,
free it and return STATUS_MORE_PROCESSING_REQUIRED, this works fine.

Max