Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 8669 of file class.c.
Referenced by ClassPnpStartDevice().
{ PFUNCTIONAL_DEVICE_EXTENSION fdoExtension; PCOMMON_DEVICE_EXTENSION commonExtension; PCLASS_PRIVATE_FDO_DATA fdoData; PCLASS_RETRY_INFO retryList; KIRQL irql; commonExtension = DeviceObject->DeviceExtension; ASSERT(commonExtension->IsFdo); fdoExtension = DeviceObject->DeviceExtension; fdoData = fdoExtension->PrivateFdoData; KeAcquireSpinLock(&fdoData->Retry.Lock, &irql); { LARGE_INTEGER now; KeQueryTickCount(&now); // // if CurrentTick is less than now // fire another DPC // else // retry entire list // endif // if (now.QuadPart < fdoData->Retry.Tick.QuadPart) { ClasspRetryDpcTimer(fdoData); retryList = NULL; } else { retryList = fdoData->Retry.ListHead; fdoData->Retry.ListHead = NULL; fdoData->Retry.Delta.QuadPart = (LONGLONG)0; fdoData->Retry.Tick.QuadPart = (LONGLONG)0; } } KeReleaseSpinLock(&fdoData->Retry.Lock, irql); while (retryList != NULL) { PIRP irp; irp = CONTAINING_RECORD(retryList, IRP, Tail.Overlay.DriverContext[0]); DebugPrint((ClassDebugDelayedRetry, "ClassRetry: -- %p\n", irp)); retryList = retryList->Next; #if DBG irp->Tail.Overlay.DriverContext[0] = ULongToPtr(0xdddddddd); // invalidate data irp->Tail.Overlay.DriverContext[1] = ULongToPtr(0xdddddddd); // invalidate data irp->Tail.Overlay.DriverContext[2] = ULongToPtr(0xdddddddd); // invalidate data irp->Tail.Overlay.DriverContext[3] = ULongToPtr(0xdddddddd); // invalidate data #endif IoCallDriver(commonExtension->LowerDeviceObject, irp); } return; } // end ClasspRetryRequestDpc()