ICrmLogControl::RegisterCompensator-Methode (comsvcs.h)
Der CRM-Worker verwendet diese Methode, um den CRM-Kompensator bei der CRM-Infrastruktur zu registrieren. Es muss die erste Methode sein, die vom CRM-Worker aufgerufen wird, und sie kann nur einmal erfolgreich aufgerufen werden. Wenn der CRM-Worker beim Aufrufen dieser Methode den Fehlercode "Wiederherstellung in Bearbeitung" empfängt, sollte er diese Methode erneut aufrufen, bis sie erfolgreich ist.
Syntax
HRESULT RegisterCompensator(
[in] LPCWSTR lpcwstrProgIdCompensator,
[in] LPCWSTR lpcwstrDescription,
[in] LONG lCrmRegFlags
);
Parameter
[in] lpcwstrProgIdCompensator
Die ProgId des CRM-Kompensator. Die CLSID des CRM-Kompensator in Zeichenfolgenform wird ebenfalls akzeptiert.
[in] lpcwstrDescription
Die Beschreibungszeichenfolge, die von den Überwachungsschnittstellen verwendet werden soll.
[in] lCrmRegFlags
Flags aus der CRMREGFLAGS-Enumeration , die steuern, welche Phasen des Transaktionsabschlusses vom CRM-Kompensator empfangen werden sollen und ob die Wiederherstellung fehlschlagen soll, wenn nach dem Versuch der Wiederherstellung Zweifel bestehen.
Rückgabewert
Diese Methode kann die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich abgeschlossen. |
|
Ein NULL-Zeiger wurde als Argument bereitgestellt. |
|
Ein unerwarteter Fehler ist aufgetreten. |
|
Die Komponente, die den CRM-Clerk erstellt, verfügt nicht über eine Transaktion. |
|
Die Wiederherstellung der CRM-Protokolldatei wird noch ausgeführt. |
|
Fehler bei der Wiederherstellung der CRM-Protokolldatei, da zweifelsfreie Transaktionen verbleiben. |
|
Diese Methode wurde im falschen Zustand aufgerufen. entweder vor RegisterCompensator oder beim Abschluss der Transaktion (CRM Worker). |
|
Ein Fehler mit nicht genügend Arbeitsspeicher ist aufgetreten. |
|
Der CRM-Kompensator unterstützt nicht mindestens eine der erforderlichen Schnittstellen (ICrmCompensator oder ICrmCompensatorVariants). |
Hinweise
Mit dem lCrmRegFlags-Parameter kann der Implementierer entscheiden, welche Phasen des Transaktionsabschlusses der CRM-Kompensator erhalten möchte. Einige CRM-Kompensatoren leisten möglicherweise keine Arbeit in der Vorbereitungsphase und müssen daher keine Vorbereitungsbenachrichtigungen erhalten. Es kann die Leistung verbessern, um anzugeben, dass in diesem Fall keine Vorbereitungsphase erforderlich ist.
Es wird empfohlen, CRM-Worker und CRM-Kompensatoren als "Beide"-Threadkomponenten (Threadingmodell = Beliebige Wohnung) zu entwickeln. In einigen Fällen ist dies jedoch möglicherweise aufgrund von Spracheinschränkungen nicht möglich (z. B. bei der Entwicklung von CRMs mit Visual Basic). Crm-Kompensatoren mit Apartmentthreads (Threadingmodell = Single Thread Apartment) werden in der Vorbereitungsphase deadlockt, es sei denn, ihre Synchronisierungseigenschaft wird auf "nicht unterstützt" festgelegt. Eine weitere Alternative für Apartmentthread-CRM-Kompensatoren besteht darin, die Vorbereitungsphase zu überspringen, wenn dies nicht erforderlich ist.
In Szenarien mit mehreren Distributed Transaction Coordinators (DTCs) ist es möglich, dass eine DTC-Transaktion in den Zweifelszustand wechselt. Normalerweise liegt dies daran, dass während einer Transaktion eine Unterbrechung aufgetreten ist und der Absender der Transaktion nicht kontaktiert werden kann, um das Ergebnis der Transaktion zu ermitteln. In diesem Fall kann die CRM-Infrastruktur das Ergebnis der Transaktion nicht ermitteln. Ein CRM-Implementierer kann entscheiden, ob in diesem Fall neue Transaktionen zugelassen werden sollen.
Das Flag "Fail if doubts remain" wird wie folgt verwendet: Wenn das Flag "Fail if in doubts remain" für RegisterCompensator angegeben wird, schlägt der Aufruf von RegisterCompensator mit dem Fehlercode "Recovery Failed" fehl, wenn zweifelsfreie Transaktionen nach der Wiederherstellung verbleiben. Wenn das Flag "Fail if in doubts remain" nicht angegeben wird, ist die Wiederherstellung erfolgreich, neue Transaktionen sind zulässig, und die zweifelsfreien Transaktionen verbleiben in der CRM-Protokolldatei. Die CRM-Infrastruktur versucht, diese zweifelsfreien Transaktionen bei der nächsten Wiederherstellung (wenn der Anwendungsserverprozess neu gestartet wird) wieder aufzulösen.
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 |