DrvError
Tritt bei der Verwendung des Laufwerkstreibers ein Verarbeitungsfehler auf, wird dieses Ereignis aufgerufen. In dem Ereignis kann eine entsprechende Protokollierung vorgenommen werden. Der Wert in Result kann mit folgenden Konstanten verglichen werden:
-
_ErrDrvDriverNotInstalled: Der Grätetreiber des Laufwerkstreibers ist nicht installiert. -
_ErrDrvInitFailed: Fehler bei der Initialisierung des Laufwerkstreibers. -
_ErrDrvInitInvalidData: Kein Laufwerksbuchstabe und Freigabename angegeben. -
_ErrDrvInitDriveLetterInUse: Der Laufwerksbuchstabe ist in Benutzung. -
_ErrDrvCreateTempPath: Temporärer Pfad ist ungültig oder konnte nicht angelegt werden. -
_ErrDrvCreateTempFile: Temporäre Datei konnte nicht angelegt werden. -
_ErrDrvClearTempPath: Temporärer Pfad war nicht leer und wurde geleert. -
Response
-
MessageId_DrvResError- Id der Antwort
-
ItemHeader_DrvItemHeader- Kopf des Datenpakets
-
ProtocolId0xF3A49E52- Id des verwendeten Protokolls
-
ProtocolVersion0x00040000- Version des verwendeten Protokolls
Beispiel:
if (tRequestMessageId = _DrvReqError)
{
// read error message
tDrvMsxRead->MsxRead(_MsxItem, tItemResult);
tDrvMsxRead->MsxRead(_MsxData, tRequestResult);
tDrvMsxRead->MsxRead(_MsxItem, tItemErrorText);
tDrvMsxRead->MsxRead(_MsxData, tRequestErrorText);
if (tRequestErrorText != '')
tRequestErrorText # StrCnv(tRequestErrorText, _StrFromUTF8);
// write log
SvcLog(_LogError, false, StrCut('EvtError() - code= ' + CnvAI(tRequestResult) + ' / errorText= ' + tRequestErrorText, 1, 250));
// alternative
DbaLog(_LogInfo, false, StrCut('EvtError() - code= ' + CnvAI(tRequestResult) + ' / errorText= ' + tRequestErrorText, 1, 250));
tDrvMsxWrite # MsxOpen(_MsxSocket | _MsxWrite, tSck);
tDrvMsxWrite->MsxWrite(_MsxMessage, _DrvResError);
tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemHeader); // ItemHeader
tDrvMsxWrite->MsxWrite(_MsxData, 0xF3A49E52); // ProtocolId
tDrvMsxWrite->MsxWrite(_MsxData, 0x00040000); // ProtocolVersion
tDrvMsxWrite->MsxWrite(_MsxEnd, 0);
tDrvMsxWrite->MsxClose();
}