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.
Das MC_DEALLOCATE Verb deallocate a conversation between two transaction programs (TP).
In der folgenden Struktur wird der verbsteuerungsblock (VCB) beschrieben, der vom MC_DEALLOCATE Verb verwendet wird.
Syntax
struct mc_deallocate {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_id[8];
unsigned long conv_id;
unsigned char reserv3;
unsigned char dealloc_type;
unsigned char reserv4[2];
unsigned char reserv5[4];
void (WINAPI *callback)();
void *correlator;
unsigned char reserv6[4];
};
Elemente
opcode
Angegebener Parameter. Gibt den Verbvorgangscode AP_M_DEALLOCATE an.
opext
Angegebener Parameter. Gibt die Verbvorgangserweiterung AP_MAPPED_CONVERSATION an.
reserv2
Ein reserviertes Feld.
primary_rc
Zurückgegebener Parameter. Gibt den primären Rückgabecode an, der von APPC am Ende des Verbs festgelegt wurde. Die gültigen Rückgabecodes variieren je nach ausgegebenen APPC-Verb. Informationen zu gültigen Fehlercodes für dieses Verb finden Sie unter "Rückgabecodes".
secondary_rc
Zurückgegebener Parameter. Gibt den von APPC festgelegten sekundären Rückgabecode am Ende des Verbs an. Die gültigen Rückgabecodes variieren je nach ausgegebenen APPC-Verb. Informationen zu gültigen Fehlercodes für dieses Verb finden Sie unter "Rückgabecodes".
tp_id
Angegebener Parameter. Identifiziert das lokale TP. Der Wert dieses Parameters wurde von TP_STARTED im aufrufenden TP oder von RECEIVE_ALLOCATE im aufgerufenen TP zurückgegeben.
conv_id
Angegebener Parameter. Identifiziert die Zwischenunterhaltung zwischen den beiden TPs. Der Wert dieses Parameters wird von MC_ALLOCATE im aufrufenden TP oder von RECEIVE_ALLOCATE im aufgerufenen TP zurückgegeben.
Reserv3
Ein reserviertes Feld.
dealloc_type
Angegebener Parameter. Gibt an, wie die Deallocation ausgeführt wird.
Verwenden Sie für MC_DEALLOCATE AP_ABEND, um die Unterhaltung ungewöhnlich zu behandeln. Wenn sich die Unterhaltung im SEND-Zustand befindet, wenn das lokale TP MC_DEALLOCATE ausgibt, sendet APPC den Inhalt der lokalen logischen Einheit (LU) senden Puffer an den Partner-TP, bevor die Unterhaltung zugeordnet wird. Wenn sich die Unterhaltung im STATUS "EMPFANGEN" oder "PENDING_POST" befindet, löscht APPC alle eingehenden Daten, bevor sie die Unterhaltung verlagern.
Ein TP sollte AP_ABEND angeben, wenn ein Fehler auftritt, der den erfolgreichen Abschluss einer Transaktion verhindert.
AP_FLUSH sendet den Inhalt des Sendepuffers der lokalen LU an den Partner-TP, bevor die Unterhaltung zugeordnet wird. Dieser Wert ist nur zulässig, wenn sich die Unterhaltung im SEND-Zustand befindet.
AP_SYNC_LEVEL verwendet die Synchronisierungsebene der Unterhaltung (festgelegt durch MC_ALLOCATE), um zu bestimmen, wie die Unterhaltung zugeordnet werden soll. Dieser Wert ist nur zulässig, wenn sich die Unterhaltung im SEND-Zustand befindet.
Wenn die Synchronisierungsebene der Unterhaltung AP_NONE ist, sendet APPC den Inhalt des Sendepuffers der lokalen LU an den Partner-TP, bevor die Unterhaltung zugeordnet wird.
Wenn die Synchronisierungsebene AP_CONFIRM_SYNC_LEVEL ist, sendet APPC den Inhalt des Sendepuffers der lokalen LU und eine Bestätigungsanforderung an den Partner-TP. Nach Erhalt der Bestätigung durch den Partner TP verwechselt APPC die Unterhaltung. Wenn der Partner TP jedoch einen Fehler meldet, bleibt die Unterhaltung zugeordnet.
Rückruf
Angegebener Parameter. Nur vorhanden, wenn das AP_EXTD_VCB Bit im opext-Element festgelegt ist, das die Unterstützung für Synchronisierungspunkt angibt. Dieser Parameter ist die Adresse einer vom Benutzer bereitgestellten Rückruffunktion. Wenn dieses Feld NULL ist, wird keine Benachrichtigung bereitgestellt.
Der Prototyp der Rückrufroutine lautet wie folgt:
void WINAPI callback_proc(
struct appc_hdr *vcb,
unsigned char tp_id[8],
unsigned long conv_id,
unsigned short type,
void *correlator
);
Die Rückrufprozedur kann einen beliebigen Namen annehmen, da die Adresse der Prozedur an die APPC-DLL übergeben wird. Die an die Funktion übergebenen Parameter lauten wie folgt:
vcb
Ein Zeiger auf den MC_DEALLOCATE Verb-Steuerelementblock, der dazu führte, dass die Unterhaltung zugeordnet wurde.
tp_id
Der TP-Bezeichner des TP, dem die Deallocated-Unterhaltung gehört.
conv_id
Der Unterhaltungsbezeichner der Deallocated-Unterhaltung.
Typ
Der Typ des Nachrichtenflusses, der dazu führte, dass der Rückruf aufgerufen wurde. Mögliche Werte:
AP_DATA_FLOW
Normaler Datenfluss in der Sitzung.
AP_UNBIND
Die Sitzung war normal ungebunden.
AP_FAILURE
Die Sitzung wurde aufgrund eines Ausfalls beendet.
Korrelator
Dieser Wert ist der im MC_DEALLOCATE Verb angegebene Korrelator.
Korrelator
Angegebener Parameter. Nur vorhanden, wenn das AP_EXTD_VCB Bit im opext-Element festgelegt ist, das die Unterstützung für die Synchronisierungspunkt-API angibt. Mit diesem Korrelatorfeld kann der TP einen Wert angeben, mit dem er einen Aufruf an die Rückruffunktion korrelieren kann, z. B. mit eigenen internen Datenstrukturen. Dieser Wert wird beim Aufrufen als parameter der Rückrufroutine an den TP zurückgegeben.
reserv4
Ein reserviertes Feld.
Rückgabecodes
AP_OK
Primärer Rückgabecode; das Verb erfolgreich ausgeführt wurde.
AP_PARAMETER_CHECK
Primärer Rückgabecode; das Verb wurde aufgrund eines Parameterfehlers nicht ausgeführt.
AP_BAD_CONV_ID
Sekundärer Rückgabecode; der Wert von conv_id nicht mit einem Unterhaltungsbezeichner übereinstimmt, der von APPC zugewiesen wurde.
AP_BAD_TP_ID
Sekundärer Rückgabecode; der Wert von tp_id nicht mit einem TP-Bezeichner übereinstimmt, der von APPC zugewiesen wurde.
AP_DEALLOC_BAD_TYPE
Sekundärer Rückgabecode; der parameter dealloc_type wurde nicht auf einen gültigen Wert festgelegt.
AP_STATE_CHECK
Primärer Rückgabecode; das Verb wurde nicht ausgeführt, weil es in einem ungültigen Zustand ausgegeben wurde.
AP_DEALLOC_CONFIRM_BAD_STATE
Sekundärer Rückgabecode; die Unterhaltung war nicht im SEND-Zustand, und der TP hat versucht, den Sendepuffer zu leeren und eine Bestätigungsanforderung zu senden. Dieser Versuch ist aufgetreten, da der Wert dealloc_type AP_SYNC_LEVEL und die Synchronisierungsebene der Unterhaltung AP_CONFIRM_SYNC_LEVEL wurde.
AP_DEALLOC_FLUSH_BAD_STATE
Sekundärer Rückgabecode; die Unterhaltung war nicht im SEND-Zustand, und der TP hat versucht, den Sendepuffer zu leeren. Dieser Versuch ist aufgetreten, weil der Wert von dealloc_type AP_FLUSH war oder weil der Wert der dealloc_type AP_SYNC_LEVEL und die Synchronisierungsebene der Unterhaltung AP_NONE wurde. In beiden Fällen muss sich die Unterhaltung im SEND-Zustand befinden.
AP_ALLOCATION_ERROR
Primärer Rückgabecode; APPC konnte eine Unterhaltung nicht zuordnen. Der Unterhaltungszustand ist auf RESET festgelegt.
Dieser Code kann über ein Verb zurückgegeben werden, das nach MC_ALLOCATE ausgegeben wurde.
AP_ALLOCATION_FAILURE_NO_RETRY
Sekundärer Rückgabecode; die Unterhaltung kann aufgrund einer dauerhaften Bedingung nicht zugewiesen werden, z. B. aufgrund eines Konfigurationsfehlers oder sitzungsprotokollfehlers. Um den Fehler zu ermitteln, sollte der Systemadministrator die Fehlerprotokolldatei untersuchen. Wiederholen Sie die Zuordnung erst, wenn der Fehler behoben wurde.
AP_ALLOCATION_FAILURE_RETRY
Sekundärer Rückgabecode; die Unterhaltung konnte aufgrund einer temporären Bedingung, z. B. aufgrund eines Verknüpfungsfehlers, nicht zugewiesen werden. Der Grund für den Fehler wird im Systemfehlerprotokoll protokolliert. Wiederholen Sie die Zuordnung.
AP_CONVERSATION_TYPE_MISMATCH
Sekundärer Rückgabecode; die Partner-LU oder TP unterstützt den in der Zuordnungsanforderung angegebenen Unterhaltungstyp (einfach oder zugeordnet) nicht.
AP_PIP_NOT_ALLOWED
Sekundärer Rückgabecode; Die zuordnungsanforderung angegebene PIP-Daten, aber entweder der Partner TP erfordert diese Daten nicht, oder die Partner-LU unterstützt sie nicht.
AP_PIP_NOT_SPECIFIED_CORRECTLY
Sekundärer Rückgabecode; Der Partner-TP erfordert PIP-Daten, aber die Zuordnungsanforderung hat entweder keine PIP-Daten oder eine falsche Anzahl von Parametern angegeben.
AP_SECURITY_NOT_VALID
Sekundärer Rückgabecode; Die in der Zuordnungsanforderung angegebene Benutzer-ID oder das kennwort wurde von der Partner-LU nicht akzeptiert.
AP_SYNC_LEVEL_NOT_SUPPORTED
Sekundärer Rückgabecode; der Partner-TP unterstützt die in der Zuordnungsanforderung angegebenen sync_level (AP_NONE oder AP_CONFIRM_SYNC_LEVEL) nicht, oder die sync_level wurde nicht erkannt.
AP_TP_NAME_NOT_RECOGNIZED
Sekundärer Rückgabecode; die Partner-LU erkennt den in der Zuordnungsanforderung angegebenen TP-Namen nicht.
AP_TRANS_PGM_NOT_AVAIL_NO_RETRY
Sekundärer Rückgabecode; die Remote-LU hat die Zuordnungsanforderung abgelehnt, da sie den angeforderten Partner-TP nicht starten konnte. Die Bedingung ist dauerhaft. Der Grund für den Fehler kann auf dem Remoteknoten protokolliert werden. Wiederholen Sie die Zuordnung erst, wenn der Fehler behoben wurde.
AP_TRANS_PGM_NOT_AVAIL_RETRY
Sekundärer Rückgabecode; die Remote-LU hat die Zuordnungsanforderung abgelehnt, da sie den angeforderten Partner-TP nicht starten konnte. Die Bedingung kann vorübergehend sein, z. B. ein Timeout. Der Grund für den Fehler kann auf dem Remoteknoten protokolliert werden. Wiederholen Sie die Zuordnung.
AP_COMM_SUBSYSTEM_ABENDED
Primärer Rückgabecode; gibt eine der folgenden Bedingungen an:
Der von dieser Unterhaltung verwendete Knoten hat einen ABEND gefunden.
Die Verbindung zwischen dem TP und dem PU 2.1-Knoten wurde unterbrochen (LAN-Fehler).
Die SnaBase auf dem Computer des TP ist ein ABEND aufgetreten.
Der Systemadministrator sollte das Fehlerprotokoll untersuchen, um den Grund für den ABEND zu ermitteln.
AP_CONV_FAILURE_NO_RETRY
Primärer Rückgabecode; Die Unterhaltung wurde aufgrund einer dauerhaften Bedingung beendet, z. B. aufgrund eines Sitzungsprotokollfehlers. Der Systemadministrator sollte das Systemfehlerprotokoll untersuchen, um die Ursache des Fehlers zu ermitteln. Wiederholen Sie die Unterhaltung erst, wenn der Fehler behoben wurde.AP_CONV_FAILURE_RETRY
Primärer Rückgabecode; Die Unterhaltung wurde aufgrund eines temporären Fehlers beendet. Starten Sie den TP neu, um festzustellen, ob das Problem erneut auftritt. Wenn dies der Fall ist, sollte der Systemadministrator das Fehlerprotokoll untersuchen, um die Ursache des Fehlers zu ermitteln.AP_CONVERSATION_TYPE_MIXED
Primärer Rückgabecode; das TP sowohl grundlegende als auch zugeordnete Unterhaltungsverben ausgestellt hat. In einer einzigen Unterhaltung kann nur ein Typ ausgegeben werden.AP_INVALID_VERB_SEGMENT
Primärer Rückgabecode; die VCB über das Ende des Datensegments hinaus erweitert wurde.AP_PROG_ERROR_PURGING
Primärer Rückgabecode; in RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND oder CONFIRM_DEALLOCATE State hat der Partner TP MC_SEND_ERROR ausgestellt. Gesendete, aber noch nicht empfangene Daten werden gelöscht.AP_STACK_TOO_SMALL
Primärer Rückgabecode; Die Stapelgröße der Anwendung ist zu klein, um das Verb auszuführen. Erhöhen Sie die Stapelgröße Ihrer Anwendung.AP_CONV_BUSY
Primärer Rückgabecode; es kann jeweils nur ein herausragendes Unterhaltungsverb für jede Unterhaltung vorhanden sein. Dies kann auftreten, wenn der lokale TP über mehrere Threads verfügt und mehrere Threads APPC-Aufrufe mit demselben conv_id ausgeben.AP_THREAD_BLOCKING
Primärer Rückgabecode; Der aufrufende Thread befindet sich bereits in einem blockierenden Aufruf.AP_UNEXPECTED_DOS_ERROR
Primärer Rückgabecode; Das Betriebssystem hat beim Verarbeiten eines APPC-Aufrufs vom lokalen TP einen Fehler an APPC zurückgegeben. Der Rückgabecode des Betriebssystems wird über die secondary_rc zurückgegeben. Es wird in intel byte-getauschter Reihenfolge angezeigt. Wenn das Problem weiterhin besteht, wenden Sie sich an den Systemadministrator.AP_DEALLOC_ABEND
Primärer Rückgabecode; die Unterhaltung wurde aus einem der folgenden Gründe umgestellt:Der Partner-TP hat MC_DEALLOCATE ausgestellt, wobei dealloc_type auf AP_ABEND festgelegt ist.
Der Partner TP hat einen ABEND gefunden, wodurch die Partner-LU eine MC_DEALLOCATE Anfrage sendet.
Bemerkungen
Abhängig vom Wert des dealloc_type Parameters kann sich die Unterhaltung in einem der in der folgenden Tabelle angegebenen Zustände befinden, wenn der TP MC_DEALLOCATE ausgibt.
| Dealloc_type | Zulässiger Zustand |
|---|---|
| AP_FLUSH | SENDEN |
| AP_SYNC_LEVEL | SENDEN |
| AP_ABEND | Beliebiger Zustand außer RESET |
| AP_ABEND_PROG | Beliebiger Zustand außer RESET |
| AP_ABEND_SVC | Beliebiger Zustand außer RESET |
| AP_ABEND_TIMER | Beliebiger Zustand außer RESET |
Zustandsänderungen, zusammengefasst in der folgenden Tabelle, basieren auf dem Wert des primary_rc.
| Primary_rc | Neuer Zustand |
|---|---|
| AP_OK | ZURÜCKSETZEN |
| AP_ALLOCATION_ERROR | ZURÜCKSETZEN |
| AP_CONV_FAILURE_RETRY | ZURÜCKSETZEN |
| AP_CONV_FAILURE_NO_RETRY | ZURÜCKSETZEN |
| AP_DEALLOC_ABEND | ZURÜCKSETZEN |
| AP_DEALLOC_ABEND_PROG | ZURÜCKSETZEN |
| AP_DEALLOC_ABEND_SVC | ZURÜCKSETZEN |
| AP_DEALLOC_ABEND_TIMER | ZURÜCKSETZEN |
| AP_PROG_ERROR_PURGING | EMPFANGEN |
Vor der Zuordnung der Unterhaltung führt dieses Verb das Äquivalent eines der folgenden Aktionen aus:
MC_FLUSH, indem der Inhalt des Sendepuffers der lokalen LU an die Partner-LU (und TP) gesendet wird.
MC_CONFIRM, indem sie den Inhalt des Sendepuffers der lokalen LU und eine Bestätigungsanforderung an den Partner-TP senden.
Nachdem dieses Verb erfolgreich ausgeführt wurde, ist der Unterhaltungsbezeichner nicht mehr gültig.
LU 6.2-Synchronisierungspunkt kann eine Optimierung der Nachrichtenflüsse verwenden, die als impliziertes Vergessen bezeichnet werden. Wenn das Protokoll angibt, dass ein FORGET PS-Header erforderlich ist, bedeutet der nächste Datenfluss in der Sitzung, dass ein FORGET empfangen wurde. In der normalen Situation ist der TP über den nächsten Datenfluss informiert, wenn Daten in einer seiner Synchronisierungspunktunterhaltungen empfangen oder gesendet werden.
Es ist jedoch möglich, dass die letzte Nachricht, die ablaufen soll, durch die Unterhaltung verursacht wird, die zugeordnet wird. In diesem Fall ist der TP nicht bewusst, wenn der nächste Datenfluss in der Sitzung auftritt. Um den TP mit dieser Benachrichtigung bereitzustellen, wird das verb MC_DEALLOCATE geändert, damit tp eine Rückruffunktion registrieren kann, die aufgerufen wird:
Bei der ersten normalen Flussübertragung (Anforderung oder Antwort) über die sitzung, die von der Unterhaltung verwendet wird.
Wenn die Sitzung vor anderen Datenflüssen ungebunden ist.
Wenn die Sitzung aufgrund eines DLC-Ausfalls anormal beendet wird.
Das verb MC_DEALLOCATE enthält auch ein Korrelatorfeldmemm , das als parameter zurückgegeben wird, wenn die Rückruffunktion aufgerufen wird. Die Anwendung kann diesen Parameter beliebig verwenden (z. B. als Zeiger auf einen Steuerelementblock innerhalb der Anwendung).
Der TP kann den Typparameter verwenden, der an die Rückruffunktion übergeben wird, um zu bestimmen, ob der Nachrichtenfluss angibt, dass ein implizites Vergessen empfangen wurde.
Beachten Sie, dass das MC_DEALLOCATE Verb wahrscheinlich abgeschlossen wird, bevor die Rückrufroutine aufgerufen wird. Die Unterhaltung gilt als zurückgesetzt, und es können keine weiteren Verben mit dem Unterhaltungsbezeichner ausgegeben werden. Wenn die Anwendung ein TP_ENDED Verb vor dem nächsten Datenfluss in der Sitzung ausgibt, wird die Rückrufroutine nicht aufgerufen.
Der Hostintegrationsserver ermöglicht es TPs, Unterhaltungen sofort nach dem Senden von Daten zu behandeln, indem der Typparameter für MC_SEND_DATA als AP_SEND_DATA_DEALLOC_ * angegeben wird. Die verben MC_SEND_DATA enthalten jedoch nicht die implizite Rückruffunktion zum Vergessen. TPs, die implizit vergessene Benachrichtigung erhalten möchten, müssen MC_DEALLOCATE explizit ausgeben.