Zum Hauptinhalt springen

DrvGetVolumeData

Dieses Ereignis wird aufgerufen, wenn die Informationen des Laufwerks abgefragt werden (zum Beispiel durch den Aufruf der Eigenschaften eines Laufwerks). Als Ergebnis wird die gesamte und die freie Speicherkapazität sowie die Id und der Name des Laufwerks zurückgegeben.

  • Response
  • MessageId
    • _DrvResGetVolumeData
    • Id der Antwort
  • ItemHeader
    • _DrvItemHeader
    • Kopf des Datenpakets
  • ProtocolId
    • 0xF3A49E52
    • Id des verwendeten Protokolls
  • ProtocolVersion
    • 0x00040000
    • Version des verwendeten Protokolls
  • ItemVolumeSize
  • FreeSize
    • bigint
    • Freier Speicherplatz auf dem Laufwerk (in Bytes)
  • TotalSize
    • bigint
    • Gesamtkapazität des Laufwerks (in Bytes)
  • ItemVolumeId
  • VolumeId
    • int
    • Id des Laufwerks
  • ItemVolumeLabel
  • VolumeLabel
    • alpha
    • Name des Laufwerks.
  • ItemTimeout
  • Timeout
    • int
    • Zeit bis zum erneuten Abruf der Informationen (in Millisekunden).

Beispiel:

if (tDrvRequestMessageId = _DrvReqGetVolumeData)
{
tDrvMsxWrite # MsxOpen(_MsxSocket | _MsxWrite, tSck);

tDrvMsxWrite->MsxWrite(_MsxMessage, _DrvResGetVolumeData);
tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemHeader); // ItemHeader
tDrvMsxWrite->MsxWrite(_MsxData, 0xF3A49E52); // ProtocolId
tDrvMsxWrite->MsxWrite(_MsxData, 0x00040000); // ProtocolVersion

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemVolumeSize);
tDrvMsxWrite->MsxWrite(_MsxData, CnvBI(DbaInfo(_DbaAreaFree)) * 1024\b); // free space in database
tDrvMsxWrite->MsxWrite(_MsxData, CnvBI(DbaInfo(_DbaAreaSize)) * 1024\b); // size of database

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemVolumeId);
tDrvMsxWrite->MsxWrite(_MsxData, 0);

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemVolumeLabel);
tDrvMsxWrite->MsxWrite(_MsxData, StrCnv(StrCnv('BlobDrive', _StrToUTF8), _StrFromANSI);

tDrvMsxWrite->MsxWrite(_MsxItem, _DrvItemTimeout); // timeout until next call for volume data
tDrvMsxWrite->MsxWrite(_MsxData, 60000); // 60 sec.

tDrvMsxWrite->MsxWrite(_MsxEnd, 0);

tDrvMsxWrite->MsxClose();
}