Die OLE-Component Object Model

Die von der AVIFile-Bibliothek verwendeten Objekte sind Alle Teil des OLE-Component Object Model. In erster Linie bedeutet dies, dass sie bestimmte Methoden gemeinsam nutzen, die ihnen die Arbeit erleichtern, und die Werte, die sie zurückgeben, sind für die meisten OLE-Schnittstellenmethoden üblich.

Der OLE Component Object Model der Datei- und Streamhandler verwendet die OLE IClassFactory-Schnittstelle, um Instanzen ihrer Objektklasse zu erstellen. Als Komponentenobjekte implementieren sie die IUnknown-Schnittstelle, die aus den Methoden QueryInterface, Releaseund AddRef besteht. Mit der IUnknown-Schnittstelle kann eine Anwendung Zeiger auf andere Schnittstellen abrufen, die vom gleichen Objekt unterstützt werden.

Sie können mithilfe der QueryInterface-Methode ermitteln, ob ein Objekt eine bestimmte Schnittstelle unterstützt. Wenn ein Objekt eine angegebene Schnittstelle unterstützt, gibt QueryInterface einen Zeiger auf diese Schnittstelle zurück.

Sie können die einem Objekt zugeordnete Verweisanzahl mithilfe der Methoden AddRef und Release erhöhen und dekrementieren. Mit der Verweisanzahl können mehrere Clients auf ein Objekt zugreifen. Wenn ein Objekt von der ersten Anwendung verwendet wird, wird die Verweisanzahl auf 1 festgelegt. Anwendungen verwenden anschließend die AddRef-Methode, um die Anzahl zu erhöhen, damit das Objekt nachverfolgen kann, wie oft darauf zugegriffen wird.

Wenn eine Anwendung mit einem -Objekt fertig ist, ruft sie die Release-Methode auf, um die Verweisanzahl zu dekrementieren. Wenn der Verweiszähler 0 (null) ist, wird das Objekt nicht mehr benötigt, und Release gibt alle ressourcen frei, die es verwendet, und zerstört das Objekt. Da ein Objekt interne Ressourcen verwendet, die für die Anwendung transparent sind, ist das Objekt für deren Freistellung verantwortlich. Ein Dateihandler muss z. B. geöffnete Datenträgerdateien schließen und pufferspeichern, wenn er freigegeben wird.

Die meisten OLE-Schnittstellenmethoden geben Ergebnishandles zurück, die mithilfe des HRESULT-Datentyps definiert werden. Dieser Datentyp besteht aus einem Schweregradcode, Kontextinformationen, einem Einrichtungscode und einem Statuscode. Ein Rückgabeergebnishand handle, das angibt, dass der Erfolg den Wert 0 hat. Ein Wert ungleich 0 (null) gibt einen Fehler an, und der Statuscode-Member des Rückgabeergebnishandpunkts stellt eine Grundlage für zusätzliche Interpretationen zur Verfügung. Weitere Informationen zu OLE-Rückgabeergebnishandles finden Sie in der OLE-Programmiererreferenz.