Removing an ISR
Drivers can remove an ISR that is registered with IoConnectInterruptEx by calling IoDisconnectInterruptEx. IoDisconectInterruptEx takes a single Parameters parameter, which is a pointer to an IO_DISCONNECT_INTERRUPT_PARAMETERS structure. The values that are used for the members of the structure depend on the version that is used to register the ISR.
The driver must save certain information when it registers the ISR to later remove it. For the CONNECT_LINE_BASED and CONNECT_FULLY_SPECIFIED versions, the driver must save the value that is supplied in the LineBased.InterruptObject or FullySpecified.InterruptObject member of IO_CONNECT_INTERRUPT_PARAMETERS. For the CONNECT_MESSAGE_BASED version, the driver must save the values supplied in the Version and MessageBased.ConnectionContext members of IO_CONNECT_INTERRUPT_PARAMETERS.