Freigeben über


Anfordern des Besitzes

Wenn der E/A-Manager eine E/A-Anforderung an einen frameworkbasierten Treiber sendet, fängt das Framework die Anforderung ab und erstellt ein Frameworkanforderungsobjekt. Das Framework "besitzt" das Anforderungsobjekt, da nur das Framework auf die Anforderung zugreifen und Vorgänge für das Objekt ausführen kann.

Nachdem das Framework ein Anforderungsobjekt erstellt hat, platziert es das Objekt in einer der E/A-Warteschlangen des Treibers. Das Framework besitzt weiterhin das Anforderungsobjekt, bis es die Anforderung aus der Warteschlange entfernt und an den Treiber übermittelt.

Nachdem der Treiber das Anforderungsobjekt empfangen hat , besitzt er die Anforderung. Der Treiber kann über ein Handle auf das Anforderungsobjekt zugreifen und Vorgänge für das Objekt ausführen. Obwohl der Treiber das Anforderungsobjekt besitzt, kann er die Anforderung erneut in die Warteschlangestellen, abschließen, abbrechen oder weiterleiten . Danach besitzt er das Anforderungsobjekt nicht mehr und kann nicht mehr darauf zugreifen.

Wenn der Besitz eines Anforderungsobjekts zwischen einem Treiber und dem Framework übergeben wird, ändert sich der Wert des Objekthandles nicht. Wenn beispielsweise ein Treiber eine Anforderung von einer E/A-Warteschlange empfängt, ihn erneut in eine andere Warteschlange einreiht und dann die Anforderung erneut empfängt, ändert sich der Wert des Handles nicht. Wenn ein Treiber eine Anforderung an ein E/A-Ziel weiterleitet und später eine Benachrichtigung erhält, dass das E/A-Ziel die Anforderung abgeschlossen hat, erhält die Benachrichtigungsrückruffunktion des Treibers den gleichen Handlewert, den der Treiber für das E/A-Ziel bereitgestellt hat.