Initialisieren des WIA Minidrivers

Der erste Schritt bei der Implementierung der IWiaMiniDrv-Schnittstelle besteht darin, den Minitreiber zu initialisieren und eine hierarchische Struktur von Treiberelementen zu erstellen. Dazu ruft der WIA-Dienst jedes Mal die IWiaMiniDrv::d rvInitializeWia-Methode auf, wenn eine Clientanwendung das Gerät verwenden möchte. Wenn zwei oder mehr Anwendungen gleichzeitig das Gerät verwenden, ruft der WIA-Dienst diese Methode für jede Anwendung auf. Bei dieser Methode führt der Minidriver in der Regel Folgendes aus:

  1. Initialisiert Parameter, die vom WIA-Dienst übergeben werden.

  2. Speichert die STI-Geräteschnittstelle, auf die von pStiDevice verwiesen wird. Dies erfolgt, damit die Methoden IStiDevice::LockDevice und IStiDevice::UnLockDevice zum Sperren oder Entsperren des WIA-Geräts verwendet werden können.

  3. Speichert bstrDeviceID und bstrRootFullItemName in Membervariablen zwischen, damit sie von anderen Methoden verwendet werden können.

  4. Öffnet ein Handle für das Gerät. (Dieser Schritt wird für nicht freigegebene Ports wie USB, SCSI und 1394 empfohlen.)

  5. Erstellt die Elementstruktur, wie unter Erstellen der WIA-Treiberelementstruktur beschrieben.

Die IWiaMiniDrv::d rvInitializeWia-Methode kann auch verwendet werden, um dynamische Arrays und Strukturen zu erstellen und zu initialisieren, die der Treiber verwendet. Beispielsweise kann ein Array von Befehlen und Ereignissen, die vom Treiber unterstützt werden, zur späteren Verwendung durch die IWiaMiniDrv::d rvGetCapabilities-Methode erstellt werden.

Hinweis Die IWiaMiniDrv::d rvGetCapabilities-Methode kann aufgerufen werden, bevor IWiaMiniDrv::d rvInitializeWia aufgerufen wird. Dies kann der Fall sein, wenn der WIA-Dienst Ereignisinformationen abfragen muss, bevor eine Anwendung vorhanden ist, um das Gerät zu verwenden. Die IWiaMiniDrv::d rvInitializeWia-Methode wird nur aufgerufen, wenn eine Anwendung ihre Absicht signalisiert, das Gerät zu verwenden.

Nachverfolgen von Anwendungsverbindungen

Wie bereits erwähnt, ruft der WIA-Dienst, wenn eine Anwendung mit einem WIA-Gerät kommunizieren möchte, die IWiaMiniDrv::d rvInitializeWia-Methode des entsprechenden Treibers auf. Wenn die Anwendung mit dem Gerät fertig ist und alle WIA-Verweise darauf freigibt, ruft der WIA-Dienst die IWiaMiniDrv::d rvUnInitializeWia-Methode des entsprechenden Treibers auf. Beachten Sie, dass WIA mehrere gleichzeitige Anwendungsverbindungen unterstützt. Dies bedeutet, dass zwei oder mehr Anwendungen eine WIA-Schnittstelle anfordern können, die demselben Gerät zugeordnet ist. Dies bedeutet jedoch nicht, dass der Treiber gleichzeitige Anforderungen verarbeiten muss; Der WIA-Dienst stellt sicher, dass jeweils nur eine Anforderung an den Treiber gesendet wird. Der WIA-Dienst kann die IWiaMiniDrv::d rvInitializeWia-Methode jedoch mehrmals aufrufen, bevor er die IWiaMiniDrv::d rvUnInitializeWia-Methode aufruft.

Warum sind diese Informationen nützlich? Häufig gibt es Ressourcen, die Treiber benötigen, wenn Anwendungen sie verwenden, z. B. die WIA-Treiberelementstruktur, Bildfilterbibliotheken und andere. Da diese Ressourcen eine große Menge an Arbeitsspeicher beanspruchen können, ist es am besten, sie zu entladen, wenn sie nicht benötigt werden.

Hinweis Die Methoden IWiaMiniDrv::d rvInitializeWia und IWiaMiniDrv::d rvUnInitializeWia werden verwendet, um Treiber nur über Anwendungsverbindungen zu informieren. Der WIA-Dienst kann andere Treibermethoden aufrufen, ohne zuerst IWiaMiniDrv::d rvInitializeWia aufzurufen. Dies bedeutet, dass der WIA-Dienst nicht unbedingt IWiaMiniDrv::d rvUnInitializeWia aufruft. Die aufgerufenen Methoden sind Informationsmethoden, die keine WIA-Elemente erfordern, z. B. IWiaMiniDrv::d rvGetCapabilities und IWiaMiniDrv::d rvGetWiaFormatInfo.

Dieser Abschnitt enthält die folgenden Themen:

Aufrufreihenfolge für Minidriver-Funktionen

Laden und Entladen eines WIA Minidrivers

Verbinden und Trennen einer WIA-Anwendung

Melden des WIA Minidriver-Status