Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een stuurprogramma voor Windows 2000, Windows XP of Windows Server 2003 kan een koppeling maken naar de Iointex.lib-bibliotheek om IoConnectInterruptEx- te gebruiken op deze versies van het besturingssysteem.
Als u IoConnectInterruptEx wilt gebruiken in een dergelijk stuurprogramma, moet u Iointex.h opnemen in de broncode voor uw stuurprogramma, direct na Wdm.h of Ntddk.h. De Iointex.h-header declareert een prototype voor de routine. Wanneer u uw stuurprogramma bouwt, moet u ervoor zorgen dat het statisch is gekoppeld aan Iointex.lib.
Voor besturingssystemen vóór Windows Vista ondersteunt de versie van IoConnectInterruptEx geleverd door Iointex.lib alleen de CONNECT_FULLY_SPECIFIED versie van de routine. Als er een andere versie is opgegeven, retourneert de routine een NTSTATUS-foutcode en wordt Parameters->versie ingesteld op CONNECT_FULLY_SPECIFIED.
Met dit gedrag kunt u uw stuurprogramma schrijven zodat deze gebruikmaakt van CONNECT_LINE_BASED of CONNECT_MESSAGE_BASED op Windows Vista en CONNECT_FULLY_SPECIFIED op eerdere besturingssystemen. Roep eerst IoConnectInterruptEx aan met Parameters->Versie gelijk aan CONNECT_LINE_BASED of CONNECT_MESSAGE_BASED. Als de retourwaarde een foutcode is en Parameters->versie != CONNECT_FULLY_SPECIFIED, voert u de bewerking opnieuw uit met Parameters->versie ingesteld op CONNECT_FULLY_SPECIFIED.
In het volgende codevoorbeeld ziet u de techniek:
IO_CONNECT_INTERRUPT_PARAMETERS params;
// deviceExtension is a pointer to the driver's device extension.
// deviceExtension->MessageUsed is a BOOLEAN.
RtlZeroMemory( ¶ms, sizeof(IO_CONNECT_INTERRUPT_PARAMETERS) );
params.Version = CONNECT_MESSAGE_BASED;
// Set members of params.MessageBased here.
status = IoConnectInterruptEx(¶ms);
if ( NT_SUCCESS(status) ) {
// Operation succeeded. We are running on Windows Vista.
devExt->MessageUsed = TRUE; // We save this for posterity.
} else {
// Check to see if we are running on an operating system prior to Windows Vista.
if (params.Version == CONNECT_FULLY_SPECIFIED) {
devExt->MessageUsed = FALSE; // We're not using message-signaled interrupts.
// Set members of params.FullySpecified here.
status = IoConnectInterruptEx(¶ms);
} else {
// Other error.
}
}