Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Un driver intermedio inizializza i miniport virtuali dopo che ha aperto correttamente un adattatore miniport sottostante ed è pronto ad accettare le richieste e gli invii sui miniport virtuali. Un driver intermedio chiama NdisIMInitializeDeviceInstanceEx dalla relativa funzione ProtocolBindAdapterEx una o più volte per richiedere l'inizializzazione di uno o più miniport virtuali.
Nota Un driver intermedio non è tenuto a chiamare NdisIMInitializeDeviceInstanceEx quando apre un adattatore miniport sottostante. Non è necessario che vi sia una relazione uno-a-uno tra miniport virtuali e adattatori aperti.
Impostare il parametro DriverInstance di NdisIMInitializeDeviceInstanceEx sul nome del dispositivo per il miniport virtuale da inizializzare. Il driver intermedio ottiene il nome del dispositivo dalla UpperBindings chiave del Registro di sistema.
Per un driver intermedio MUX nche esegue il layer di più miniport virtuali su una singola scheda di interfaccia di rete fisica, deve essere presente un nome di dispositivo per ogni miniport virtuale. Il driver intermedio MUX richiede un oggetto notify che gestisce l'elenco dei nomi dei dispositivi miniport virtuali. Il percorso consigliato per l'elenco è la chiave del Registro di sistema UpperBindings. In questo caso, l'UpperBindings chiave del Registro di sistema è una voce MULTI_SZ che contiene l'elenco dei nomi dei dispositivi. Il driver intermedio MUX chiama NdisIMInitializeDeviceInstanceEx una volta per ogni nome di dispositivo specificato nell'elenco dei nomi del dispositivo.
La chiamata a NdisIMInitializeDeviceInstanceEx genera una chiamata alla funzione miniportInitializeEx del driver intermedio per eseguire l'inizializzazione del miniport virtuale specificato, purché NDIS riceva un IRP_MN_START_DEVICE per avviare il dispositivo. Se NDIS non riceve tale IRP, NDIS non chiamerà la funzione MiniportInitializeEx del driver intermedio. La chiamata a MiniportInitializeEx può verificarsi in un secondo momento e pertanto non è necessariamente all'interno del contesto della chiamata a NdisIMInitializeDeviceInstanceEx. Se NDIS non chiama mai MiniportInitializeEx per il miniport virtuale a cui viene fatto riferimento in una chiamata a NdisIMInitializeDeviceInstanceExe il driver intermedio non richiede più il miniport virtuale, il driver intermedio deve chiamare NdisIMCancelInitializeDeviceInstance per annullare l'inizializzazione del miniport virtuale. Si supponga, ad esempio, che un driver intermedio crei un miniport virtuale in risposta a un'associazione riuscita a un miniport sottostante. Prima che NDIS chiami MiniportInitializeEx, se tale associazione viene rimossa, il driver intermedio deve chiamare NdisIMCancelInitializeDeviceInstance per annullare l'inizializzazione del miniport.
miniportInitializeEx deve allocare e inizializzare un'area di contesto specifica del miniport virtuale. Per altre informazioni sulla specifica dell'area di contesto, vedere Inizializzazione di un miniport virtuale.
Un driver intermedio deve operare come un driver deserializzato. Per altre informazioni sui driver deserializzati, vedere Deserialized NDIS Miniport Drivers.
Un driver intermedio deve verificare che le informazioni sullo stato gestite siano inizializzate correttamente. Se il driver richiede risorse correlate all'invio, ad esempio nuove strutture di NET_BUFFER_LIST per i dati di rete che MiniportSendNetBufferLists trasmetteranno al livello inferiore successivo, in questo momento è possibile allocare il pool di strutture NET_BUFFER_LIST.