Freigeben über


Sperren und Entsperren eines parallelen Ports für die Verwendung durch ein paralleles Gerät

Um eine ununterbrochene Abfolge von Vorgängen auf einem parallelen Gerät auszuführen, muss ein Client den parallelen Port zuordnen und das IEEE 1284.3-Gerät am Port auswählen. Eine Abfolge von Vorgängen kann das Abschließen von E/A-Anforderungen und das Ausführen der Rückrufroutinen umfassen, die vom parallelen Portbustreiber bereitgestellt werden. Nach Abschluss einer Abfolge von Vorgängen muss ein Client die Auswahl des IEEE 1284.3-Geräts aufheben und dann den übergeordneten parallelen Port freigeben.

Der vom System bereitgestellte Bustreiber für parallele Ports unterstützt die folgenden internen Gerätesteuerungsanforderungen zum Sperren und Entsperren eines parallelen Ports:

IOCTL_INTERNAL_LOCK_PORT

IOCTL_INTERNAL_LOCK_PORT_NO_SELECT

IOCTL_INTERNAL_UNLOCK_PORT

IOCTL_INTERNAL_UNLOCK_PORT_NO_DESELECT

Microsoft empfiehlt Clients, den Sperrport zu verwenden und Portanforderungen zu entsperren, wenn die Geräte nur mit der Funktionalität betrieben werden können, die diese Anforderungen bereitstellen. Andernfalls können Clients den Sperrport no select und lock port no deselect verwenden. Dies bietet einem Client zusätzliche Flexibilität für den Betrieb eines Geräts, das einen Auswahl- und Entektionsmechanismus verwendet, der nicht den IEEE 1284.3-Daisy-Chain-Spezifikationen entspricht. Ein Client kann den Sperrport ohne Auswahlanforderung verwenden, um den Port zuzuweisen und das Gerät dann mithilfe von Gerätesteuerungsanforderungen für parallele Geräte und parallele Geräterückrufroutinen zu betreiben.

Clients können einzelne E/A-Anforderungen an parallele Geräte senden, ohne einen parallelen Port sperren und entsperren zu müssen, da der Parallelportbustreiber die Portfreigabe zwischen Clients verwaltet. Der Parallelportbustreiber ordnet den parallelen Port automatisch zu, unmittelbar bevor er eine E/A-Anforderung verarbeitet. Wenn Clients auf den Port warten, wird der Port unmittelbar nach Abschluss der E/A-Anforderung freigegeben.

Wenn der Parallelportbustreiber den Port dem parallelen Gerät innerhalb eines festgelegten Timeoutzeitraums zuordnen kann, schließt der Workerthread des Geräts die Anforderung ab. Andernfalls schließt der Parallelportbustreiber die ausstehende Anforderung mit einem status STATUS_DEVICE_BUSY ab.