Share via


IHolder::Close-Methode (comsvcs.h)

Schließt den Holder.

Syntax

HRESULT Close();

Rückgabewert

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Dadurch wird ein Resource Dispenser-Halter geschlossen, nach dem der Resource Dispenser wahrscheinlich freigegeben wurde.

Vor dem Schließen wird jeder verbleibende Bestand zerstört, indem die IDispenserDriver::D estroyResource-Methode des Resource Dispensers zurückgerufen wird.

In der folgenden Sequenz wird beschrieben, wie Sie einen Resource Dispenser schließen:

  1. Rufen Sie einen Verweis auf den Resource Dispenser (das Objekt, das IDispenserDriver verfügbar macht) ab.
  2. Rufen Sie eine Methode in Resource Dispenser auf, deren Implementierung IHolder::Close aufruft.
  3. IHolder::Close zerstört alle verbleibenden Bestände, indem die IDispenserDriver::D estroyResource-Methode von Resource Dispenser zurück aufgerufen wird.
  4. IHolder::Close ruft den Dispenser-Manager auf, um diesen Halter aus der Holder-Liste zu entfernen. (Wenn keine Holder verbleiben, löscht sich das Dispenser Manager-Objekt selbst.)
  5. IHolder::Close gibt seinen Verweis auf die IDispenserDriver-Schnittstelle von Resource Dispenser frei. Dies ist der Grund, warum Sie einen Verweis in Schritt 1 benötigen. Andernfalls würde sich der Resource Dispenser vorzeitig selbst löschen, bevor die nachfolgenden Schritte abgeschlossen werden können.
  6. IHolder::Close kehrt zum Resource Dispenser zurück.
  7. Der Resource Dispenser ruft IDispenserDriver::D estroyResource auf. Der Holder löscht sich nun selbst.
  8. Die in Schritt 2 aufgerufene Methode gibt jetzt zurück.
  9. Geben Sie Den endgültigen Verweis auf den Resource Dispenser frei, der sich nun selbst löscht.
Beachten Sie, dass die IDispenserManager::RegisterDispenser-MethodeAddRef nicht für ihr pDispenserDriver-Objekt aufruft, aber IHolder::Close führt ein Release für pDispenserDriver aus. Dies kann dazu führen, dass das Resource Dispenser-Objekt vorzeitig zerstört wird. Um diese vorzeitige Zerstörung zu verhindern, muss der Aufrufer von IHolder::Close einen Verweis auf das Resource Dispenser-Objekt enthalten, wie in den Schritten 1 und 5 beschrieben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile comsvcs.h

Weitere Informationen

IDispenserDriver

IDispenserManager

IHolder