Condividi tramite


MINIPORT_INTERRUPT_DPC funzione di callback (ndis.h)

Un driver miniport deve fornire una funzione MiniportInterruptDPC se il driver chiama la funzione NdisMRegisterInterruptEx per registrare un interruzione.

Nota È necessario dichiarare la funzione usando il tipo di MINIPORT_INTERRUPT_DPC . Per altre informazioni, vedere la sezione Esempi seguenti.
 

Sintassi

MINIPORT_INTERRUPT_DPC MiniportInterruptDpc;

void MiniportInterruptDpc(
  [in] NDIS_HANDLE MiniportInterruptContext,
  [in] PVOID MiniportDpcContext,
  [in] PVOID ReceiveThrottleParameters,
  [in] PVOID NdisReserved2
)
{...}

Parametri

[in] MiniportInterruptContext

Handle a un blocco di informazioni sul contesto di interruzione. Il driver miniport ha fornito questo handle nel parametro MiniportInterruptContext passato al driver miniport Funzione NdisMRegisterInterruptEx .

[in] MiniportDpcContext

Puntatore a un'area di contesto fornita dal driver miniport quando viene chiamata la funzione NdisMQueueDpcEx o NdisMQueueDpc . Se NDIS denominato MiniportInterruptDPC perché il driver miniport ha restituito una maschera bit nel parametro TargetProcessors della funzione MiniportInterrupt , MiniportDpcContext è NULL.

[in] ReceiveThrottleParameters

Puntatore a un oggetto NDIS_RECEIVE_THROTTLE_PARAMETERS struttura. Questa struttura specifica il numero massimo di strutture NET_BUFFER_LIST che un driver miniport deve indicare in un DPC.

[in] NdisReserved2

Riservato per NDIS.

Valore restituito

nessuno

Osservazioni

I driver Miniport che registrano un interruzione con la funzione NdisMRegisterInterruptEx devono fornire una funzione MiniportInterruptDPC .

NDIS chiama MiniportInterruptDPC per completare l'elaborazione posticipata di un interruzione. Il driver miniport può chiamare la funzione NdisMQueueDpcEx o NdisMQueueDpc per richiedere chiamate di procedure posticipate aggiuntive per altri processori.

I driver Miniport determinano l'origine di ogni interruzione e prendono un'azione appropriata. Ad esempio, se un interruzione indica il completamento di un'operazione di trasmissione, il driver miniport completa una richiesta di invio in sospeso. Se l'origine dell'interruzione è una modifica dello stato del collegamento, il driver miniport indica il nuovo stato del collegamento a NDIS. Se sono presenti pacchetti di ricezione in sospeso, il driver miniport indica i pacchetti a NDIS.

Un driver miniport che supporta il ridimensionamento lato (RSS) e ha la funzionalità abilitata, esamina le code di ricezione in MiniportInterruptDPC. La scheda di interfaccia di rete potrebbe avere già accodato pacchetti in code separate in base ai valori hash, se la scheda di interfaccia di rete fornisce tali funzionalità. In caso contrario, il driver miniport può ordinare i pacchetti in code separate in MiniportInterruptDPC.

MiniportInterruptDPC chiama Funzione NdisMIndicateReceiveNetBufferLists per indicare i pacchetti nel processore corrente. MiniportInterruptDPC può identificare l'elaborazione necessaria per altre CPU e richiedere NDIS per pianificare i PC in CPU in cui un DPC non è in sospeso.

Se il DPC corrente è in esecuzione nella stessa CPU della funzione MiniportInterrupt , il driver miniport deve indicare tutti i pacchetti che non è stato possibile eseguire il mapping a una CPU. Se questo DPC è l'ultimo DPC pianificato e non richiederà schede DI dominio aggiuntive, MiniportInterruptDPC dovrebbe riabilitare gli interruzioni nella scheda di interfaccia di rete prima che venga restituita.

Gli interruzioni sono in genere disabilitati già nella scheda di interfaccia di rete nella funzione MiniportInterrupt prima di NDIS chiama MiniportInterruptDPC. Prima di restituire il controllo, MiniportInterruptDPC può riattivare gli interruzioni. Se il driver miniport ha accodato altri DPC mentre gli interruzioni sono stati disabilitati, il driver deve abilitare gli interruzioni prima che l'ultimo DPC restituisca.

I driver Miniport devono limitare il numero di buffer di ricezione che indicano durante l'elaborazione di un batch DPC di interruzione per completare entro il limite di tempo necessario. Un batch DPC di interruzione è la raccolta di tutti i CONTROLLER di dominio eseguiti dopo l'ISR e prima che gli interruzioni vengano riabilitabili.

Un driver miniport può chiamare il Funzione NdisMDeregisterInterruptEx dalla funzione MiniportInitializeEx o MiniportHaltEx per rilasciare le risorse allocate con NdisMRegisterInterruptEx. Dopo che NdisMDeregisterInterruptEx restituisce, NDIS non chiama una funzione MiniportInterrupt o MiniportInterruptDPC.

NDIS chiama MiniportInterruptDPC in IRQL = DISPATCH_LEVEL.

Esempi

Per definire una funzione MiniportInterruptDPC , è prima necessario fornire una dichiarazione di funzione che identifica il tipo di funzione che si sta definendo. Windows fornisce un set di tipi di funzione per i driver. La dichiarazione di una funzione usando i tipi di funzione consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una funzione MiniportInterruptDPC denominata "MyInterruptDPC ", usare il tipo di MINIPORT_INTERRUPT_DPC come illustrato in questo esempio di codice:

MINIPORT_INTERRUPT_DPC MyInterruptDPC;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
VOID
 MyInterruptDPC(
    NDIS_HANDLE  MiniportInterruptContext,
    PVOID  MiniportDpcContext,
    PVOID  ReceiveThrottleParameters,
    PVOID  NdisReserved2
    )
  {...}

Il tipo di funzione MINIPORT_INTERRUPT_DPC è definito nel file di intestazione Ndis.h. Per identificare in modo più accurato gli errori durante l'esecuzione degli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione Use_decl_annotations alla definizione della funzione. L'annotazione Use_decl_annotations garantisce che vengano usate le annotazioni applicate al tipo di funzione MINIPORT_INTERRUPT_DPC nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver NDIS.

Per informazioni su Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Windows
Intestazione ndis.h (includere Ndis.h)
IRQL DISPATCH_LEVEL

Vedi anche

MiniportHaltEx

MiniportInitializeEx

MiniportInterrupt

NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS NDIS_RECEIVE_THROTTLE_PARAMETERS

NET_BUFFER_LIST

NdisMDeregisterInterruptEx

NdisMIndicateReceiveNetBufferLists

NdisMQueueDpc

NdisMQueueDpcEx

NdisMRegisterInterruptEx

Receive Side Scaling (RSS)