MiniportShutdown

VOID
    MiniportShutdown(
        IN PVOID  ShutdownContext
        ); 

MiniportShutdown is an optional function that restores a NIC to its initial state when the system is shut down, whether by the user or because an unrecoverable system error occurred.

Parameters

ShutdownContext
Points to a context area supplied when the NIC driver’s MiniportInitialize function called NdisMRegisterAdapterShutdownHandler. Usually, this input parameter is the NIC-specific MiniportAdapterContext pointer passed to other MiniportXxx functions.

Comments

Every NIC driver should have a MiniportShutdown function. MiniportShutdown does nothing more than restore the NIC to its initial state (before the miniport’s DriverEntry function runs). However, this ensures that the NIC is in a known state and ready to be reinitialized when the machine is rebooted after a system shutdown occurs for any reason, including a crash dump.

A NIC driver’s MiniportInitialize function must call NdisMRegisterAdapterShutdownHandler to set up a MiniportShutdown function. The driver’s MiniportHalt function must make a reciprocal call to NdisMDeregisterAdapterShutdownHandler.

If MiniportShutdown is called due to a user-initiated system shutdown, it runs at IRQL PASSIVE_LEVEL in a system-thread context. If it is called due to an unrecoverable error, MiniportShutdown runs at an arbitrary IRQL and in the context of whatever component raised the error. For example, MiniportShutdown might be run at high DIRQL in the context of an ISR for a device essential to continued execution of the system.

Because MiniportShutdown runs at an arbitrary IRQL, it can call only the set of NdisXxx functions that are safe to call at any IRQL.

See Also

MiniportHalt, MiniportInitialize, NdisMDeregisterAdapterShutdownHandler, NdisMRegisterAdapterShutdownHandler, NdisRawReadPortBufferUchar, NdisRawReadPortBufferUlong, NdisRawReadPortBufferUshort, NdisRawReadPortUchar, NdisRawReadPortUlong, NdisRawReadPortUshort, NdisRawWritePortBufferUchar, NdisRawWritePortBufferUlong, NdisRawWritePortBufferUshort, NdisRawWritePortUchar, NdisRawWritePortUlong, NdisRawWritePortUshort, NdisReadRegisterUchar, NdisReadRegisterUlong, NdisReadRegisterUshort, NdisWriteRegisterUchar, NdisWriteRegisterUlong, NdisWriteRegisterUshort