Metodo ICrmLogControl::RegisterCompensator (comsvcs.h)

Il ruolo di lavoro CRM usa questo metodo per registrare CRM Crm Crm con l'infrastruttura CRM. Deve essere il primo metodo chiamato dal ruolo di lavoro CRM e può essere chiamato correttamente una sola volta. Se il ruolo di lavoro CRM riceve un codice di errore "ripristino in corso" per chiamare questo metodo, deve chiamare di nuovo questo metodo fino a quando non riceve l'esito positivo.

Sintassi

HRESULT RegisterCompensator(
  [in] LPCWSTR lpcwstrProgIdCompensator,
  [in] LPCWSTR lpcwstrDescription,
  [in] LONG    lCrmRegFlags
);

Parametri

[in] lpcwstrProgIdCompensator

ProgId del CRM Compensat. Viene accettato anche il CLSID del CRM Compensat in formato stringa.

[in] lpcwstrDescription

Stringa di descrizione da utilizzare dalle interfacce di monitoraggio.

[in] lCrmRegFlags

Flag dell'enumerazione CRMREGFLAGS che controllano quali fasi di completamento della transazione devono essere ricevute da CRM Crm Crm e se il ripristino deve avere esito negativo se le transazioni in dubbio rimangono dopo il tentativo di recupero.

Valore restituito

Questo metodo può restituire i valori seguenti.

Codice restituito Descrizione
S_OK
Metodo completato correttamente.
E_POINTER
Come argomento è stato fornito un puntatore NULL .
E_UNEXPECTED
Si è verificato un errore imprevisto.
XACT_E_NOTRANSACTION
Il componente che crea l'impiegato CRM non dispone di una transazione.
XACT_E_RECOVERYINPROGRESS
Il ripristino del file di log CRM è ancora in corso.
XACT_E_RECOVERY_FAILED
Il ripristino del file di log CRM non è riuscito perché le transazioni in dubbio rimangono.
XACT_E_WRONGSTATE
Questo metodo è stato chiamato nello stato errato; prima di RegisterCompensator o quando la transazione viene completata (ruolo di lavoro CRM).
E_OUTOFMEMORY
Si è verificato un errore di memoria insufficiente.
E_NOINTERFACE
Crm Crm Crm Non supporta almeno una delle interfacce necessarie (ICrmCompensator o ICrmCompensatorVariants).

Commenti

Il parametro lCrmRegFlags consente all'implementatore di decidere quali fasi di completamento della transazione desiderano ricevere il CRM Compensat. Alcuni Crm Possono non eseguire alcun lavoro nella fase di preparazione e pertanto non hanno bisogno di ricevere notifiche di preparazione; può migliorare le prestazioni per specificare che in questo caso non è necessaria alcuna fase di preparazione.

È consigliabile sviluppare CRM Workers e CRM Crm Come componenti threading (Threading Model = Any Apartment). In alcuni casi, tuttavia, questo potrebbe non essere possibile a causa di vincoli di linguaggio, ad esempio durante lo sviluppo di CRL con Visual Basic. Crm crm threading threading (Threading Model = Single Thread Apartment) deadlock nella fase di preparazione, a meno che la proprietà di sincronizzazione non sia impostata su "non supportato". Un'altra alternativa per crm crm threaded apartment è ignorare la fase di preparazione, se non è necessario.

Negli scenari con più DTC (Distributed Transaction Coordinators), è possibile che una transazione DTC possa entrare nello stato in dubbio. In genere, ciò è dovuto al fatto che si è verificata un'interruzione durante una transazione e l'originatore della transazione non può essere contattato per individuare il risultato della transazione. In questo caso, l'infrastruttura CRM non può determinare il risultato della transazione. Un implementatore CRM può decidere se le nuove transazioni devono essere consentite in questo caso.

Il flag "fail if in-doubt remain" viene usato come segue: specificando il flag "fail if in-doubt remain" (Esito negativo se i dubbi rimangono) in RegisterCompensator, se le transazioni in dubbio rimangono dopo il ripristino, la chiamata a RegisterCompensator ha esito negativo con un codice di errore "recupero non riuscito". Se non viene specificato il flag "fail if in-doubt remain", il recupero ha esito positivo, sono consentite nuove transazioni e le transazioni in dubbio rimangono nel file di log CRM. L'infrastruttura CRM tenta di risolvere nuovamente queste transazioni in dubbio al successivo ripristino (quando il processo del server applicazioni viene riavviato).

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione comsvcs.h

Vedi anche

ICrmLogControl