Funzione WdfInterruptReportActive (wdfinterrupt.h)
[Si applica solo a KMDF]
WdfInterruptReportActive informa il sistema che l'interrupt è attivo e il driver è pronto per elaborare le richieste di interruzione nelle righe associate.
Sintassi
void WdfInterruptReportActive(
[in] WDFINTERRUPT Interrupt
);
Parametri
[in] Interrupt
Handle per un oggetto interrupt del framework.
Valore restituito
nessuno
Osservazioni
Solo i driver che implementano il risparmio energia a stato funzionale chiamano WdfInterruptReportActive.
Un driver non deve chiamare WdfInterruptReportActive immediatamente dopo la creazione di un interrupt. Il driver deve chiamare WdfInterruptReportActive solo dopo aver precedentemente chiamato WdfInterruptReportInactive.
In genere, un driver chiama WdfInterruptReportActive dalla routine ComponentActiveConditionCallback o da ComponentIdleStateCallback quando State è 0 (che indica completamente lo stato F0).
Se il driver chiama questo metodo in un sistema operativo precedente a Windows 8, il verificatore del framework segnala un errore.
Per altre informazioni, vedere Supporto degli stati di alimentazione funzionale.
Esempio
Nell'esempio seguente viene illustrato come un driver potrebbe chiamare WdfInterruptReportActive dalla routine ComponentIdleStateCallback di un driver KMDF. Il driver registra un singolo componente chiamando WdfDeviceWdmAssignPowerFrameworkSettings.
VOID
MyComponentIdleStateCallback(
_In_ PVOID Context,
_In_ ULONG Component,
_In_ ULONG State
)
{
PFDO_DEVICE_DATA deviceData;
PINTERRUPT_CONTEXT interruptContext;
deviceData = FdoGetData((WDFDEVICE)Context);
interruptContext = InterruptGetData(deviceData->Interrupt);
switch (State) {
case 0:
if (interruptContext->ReportedInactive) {
//
// the interrupt was reported inactive earlier. We need to report active now.
//
WdfInterruptReportActive(deviceData->Interrupt);
interruptContext->ReportedInactive = FALSE;
//
// Enable interrupt generation at hardware.
//
WdfInterruptAcquireLock(deviceData->Interrupt);
EnableInterruptInHardware();
WdfInterruptReleaseLock(deviceData->Interrupt);
}
break;
…
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 |
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.11 |
Intestazione | wdfinterrupt.h (include Wdf.h) |
Libreria | Wdf01000.sys (vedere Controllo delle versioni della libreria framework). |
IRQL | <=DISPATCH_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf) |