Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Benachrichtigungsdaten werden als Objekt behandelt, das die IPrintAsyncNotifyDataObject-Schnittstelle verfügbar macht. Clients der Spooler-Benachrichtigungspipeline können ihr eigenes Datenschema definieren und jeden beliebigen Datentyp hin und her senden. Der Spooler fragt jedoch das Benachrichtigungsdatenobjekt für einen BYTE*-Zeiger, die Länge der Daten und den Benachrichtigungstyp ab. Der Benachrichtigungstyp ist eine GUID, wie in Benachrichtigungstypen beschrieben.
#define INTERFACE IPrintAsyncNotifyDataObject
DECLARE_INTERFACE_(IPrintAsyncNotifyDataObject, IUnknown)
{
STDMETHOD(QueryInterface)(
THIS_
REFIID riid,
void** ppvObj
) PURE;
STDMETHOD_(ULONG, AddRef)(
THIS
) PURE;
STDMETHOD_(ULONG, Release)(
THIS
) PURE;
STDMETHOD(AcquireData)(
THIS_
OUT BYTE**,
OUT ULONG*,
OUT PrintAsyncNotificationType**
) PURE;
STDMETHOD(ReleaseData)(
THIS
) PURE;
};
Der Benachrichtigungsabsender muss die Daten in einem IPrintAsyncNotifyDataObject-Objekt packen. Der Absender muss die IUnknown-Schnittstelle implementieren.
Der hörende Client ruft die Methode IPrintAsyncNotifyDataObject::AcquireData auf, um einen Zeiger auf die Benachrichtigungsdaten, die Größe der Benachrichtigungsdaten und den Benachrichtigungstyp abzurufen.
Wenn der Client mit den Daten fertig ist, muss er die IPrintAsyncNotifyDataObject::ReleaseData-Methode aufrufen. Die Clients der Spooler-Benachrichtigungspipeline müssen die IPrintAsyncNotifyDataObject-Schnittstelle so implementieren, dass das Objekt nicht freigegeben wird, wenn die IPrintAsyncNotifyDataObject::Release-Methode aufgerufen wird, bevor die IPrintAsyncNotifyDataObject::ReleaseData-Methode aufgerufen wird. Es wird empfohlen, dass ein Aufruf der IPrintAsyncNotifyDataObject::AcquireData-Methode die Referenzanzahl des Objekts erhöht und dass ein Aufruf der ReleaseData-Methode die Referenzanzahl des Objekts verringern soll.
Der Spooler definiert eine spezielle Benachrichtigungstyp-GUID mit dem Namen NOTIFICATION_RELEASE. Wenn der Spooler oder die Überwachungsanwendung ausfällt, meldet der Rundowncode das Ende des Kanals, indem die IPrintAsyncNotifyChannel::CloseChannel-Methode aufgerufen wird.
Ein Aufruf der IPrintAsyncNotifyDataObject::AcquireData-Methode für diese Benachrichtigung gibt zurück, dass der BYTE**-Parameter auf NULL, der ULONG*-Parameter auf 0 und der GUID*-Parameter auf NOTIFICATION_RELEASE festgelegt ist.