FNFDINOTIFY-Makro (fdi.h)

Das FNFDINOTIFY-Makro stellt die Deklaration für die anwendungsdefinierte Rückrufbenachrichtigungsfunktion bereit, um die Anwendung auf dem status des Decoders zu aktualisieren.

Syntax

void FNFDINOTIFY(
   fn
);

Parameter

fn

Der Typ der Benachrichtigung.

Wert Bedeutung
fdintCABINET_INFO
0x00
Allgemeine Informationen zum Kabinett.

Wenn dieser Wert festgelegt ist, wird die FDINOTIFICATION-Struktur mit den folgenden Informationen aufgefüllt:

  • psz1 verweist auf den Namen der nächsten Ablage (ohne Pfadinformationen).
  • psz2 verweist auf den Namen des nächsten Datenträgers.
  • psz3 zeigt auf den Namen des Ablagepfads.
  • setID entspricht der Set-ID der aktuellen Ablage
  • iCabinet entspricht der Kabinettnummer innerhalb des Schranksatzes (0 für die erste Ablage, 1 für die zweite Ablage usw.).
Die Anwendung sollte 0 zurückgeben, um den Erfolg anzugeben, oder -1, um einen Fehler anzugeben, wodurch FDICopy abgebrochen wird. Für jede von FDICopy geöffnete Ablage wird einmal eine fdintCABINET_INFO Benachrichtigung bereitgestellt. dies schließt Fortsetzungs-Ablagen ein, die aufgrund von Dateien geöffnet werden, die die Ablagegrenzen überschreiten.
fdintPARTIAL_FILE
0x01
Die erste Datei in der Ablage ist eine Fortsetzung einer Datei aus der vorherigen Ablage.

Wenn dieser Wert festgelegt ist, wird die FDINOTIFICATION-Struktur mit den folgenden Informationen aufgefüllt:

  • psz1 verweist auf den Namen der Datei, die aus einer früheren Ablage fortgesetzt wurde.
  • psz2 verweist auf den Namen der Ablage, in der das erste Segment der Datei vorhanden ist.
  • psz3 verweist auf den Namen des Datenträgers, auf dem das erste Segment der Datei vorhanden ist.
Die fdintPARTIAL_FILE Benachrichtigung wird für Dateien am Anfang einer Ablage aufgerufen, die aus einer vorherigen Ablage fortgesetzt wurden. Diese Benachrichtigung erfolgt nur, wenn FDICopy für die zweite oder nachfolgende Ablage einer Reihe gestartet wird, die Dateien aus einer vorherigen Ablage fortgesetzt hat. Die Anwendung sollte 0 (erfolg) oder -1 (-1) zurückgeben, um einen Fehler anzugeben.
fdintCOPY_FILE
0x02
Informationen zur Identifizierung der zu kopierenden Datei.

Wenn dieser Wert festgelegt ist, wird die FDINOTIFICATION-Struktur mit den folgenden Informationen aufgefüllt:

  • psz1 zeigt auf den Namen einer Datei in der Ablage; cb entspricht der unkomprimierten Größe der Datei.
  • Datum entspricht dem 16-Bit-MS-DOS-Datum der Datei
  • Time entspricht der 16-Bit-MS-DOS-Zeit der Datei.
  • attribs entspricht den 16-Bit-MS-DOS-Attributen der Datei.
Die Anwendung sollte einen von drei Werten zurückgeben. 0, um die Datei zu überspringen (d. h. nicht zu kopieren); -1 (negativ), um FDICopy abzubrechen; oder ein Dateihandle ungleich null (und nicht negativ eins), das angibt, wo die Datei geschrieben werden soll. Das Dateihandle muss mit der PFNCLOSE-Funktion kompatibel sein, die für FDICreate bereitgestellt wird. Die fdintCOPY_FILE Benachrichtigung wird für jede Datei aufgerufen, die in der aktuellen Ablage beginnt, sodass die Anwendung die Möglichkeit hat, anzufordern, dass die Datei kopiert oder übersprungen wird.
fdintCLOSE_FILE_INFO
0x03
Schließen Sie die Datei, und legen Sie relevante Informationen fest.

Wenn dieser Wert festgelegt ist, wird die FDINOTIFICATION-Struktur mit den folgenden Informationen aufgefüllt:

  • psz1 zeigt auf den Namen einer Datei in der Ablage.
  • hf ist ein Dateihandle (das von fdintCOPY_FILE stammt)
  • Datum entspricht dem 16-Bit-MS-DOS-Datum der Datei
  • Time time entspricht der 16-Bit-MS-DOS-Zeit der Datei
  • attribs-Attribute entsprechen den 16-Bit-MS-DOS-Attributen der Datei (abzüglich des _A_EXEC Bits).
  • cb entspricht entweder 0 oder 1, was angibt, ob die Datei nach dem Extrahieren (1) ausgeführt werden soll oder nicht (0).
Es liegt in der Verantwortung der Anwendung, die Datei auszuführen, wenn cb gleich 1 ist. Die fdintCLOSE_FILE_INFO Benachrichtigung wird aufgerufen, nachdem alle Daten in eine Zieldatei geschrieben wurden. Die Anwendung muss die Datei schließen (mit dem bereitgestellten hf-Handle ) und datum, Uhrzeit und Attribute der Datei festlegen. Die Anwendung sollte true für erfolg und FALSE oder -1 zurückgeben, um FDICopy abzubrechen. FDI geht davon aus, dass die Zieldatei geschlossen wurde, auch wenn dieser Rückruf einen Fehler zurückgibt. FDI versucht nicht, PFNCLOSE zum Schließen der Datei zu verwenden.
fdintNEXT_CABINET
0x04
Die Datei wurde mit der nächsten Ablage fortgesetzt.

Wenn dieser Wert festgelegt ist, wird die FDINOTIFICATION-Struktur mit den folgenden Informationen aufgefüllt:

  • psz1 verweist auf den Namen der nächsten Ablage, in der die aktuelle Datei fortgesetzt wird.
  • psz2 ist ein Dateihandle (das von fdintCOPY_FILE stammt)
  • psz3 zeigt auf die Informationen zum Ablagepfad.
  • fdie entspricht einem Erfolgs- oder Fehlerwert
Diese Benachrichtigung wird nur aufgerufen, wenn fdintCOPY_FILE angewiesen wird, eine Datei, die aus einer nachfolgenden Ablage fortgesetzt wird, in die aktuelle Ablage zu kopieren. Da die Anwendung den Ablagenamen ändern kann, ist es wichtig, dass der durch psz3 angegebene Name des Ablagepfads überprüft wird, bevor er zurückgegeben wird. Darüber hinaus sollte die Anwendung sicherstellen, dass die Ablage vorhanden und lesbar ist, bevor sie zurückgegeben wird. Falls erforderlich, sollte die Anwendung zur Bestätigung eine Datenträgeränderungsaufforderung ausgeben.

Wenn diese Funktion zu FDI zurückkehrt, überprüft FDI, ob die Felder setID und iCabinet der angegebenen Ablage mit den erwarteten Werten für diese Ablage übereinstimmen. Andernfalls sendet FDI weiterhin fdintNEXT_CABINET Benachrichtigungen, wobei das fdie-Feld auf FDIERROR_WRONG_CABINET festgelegt ist, bis die richtige Ablagedatei angegeben ist oder bis diese Funktion -1 zurückgibt und den FDICopy-Aufruf abbricht. Wenn die Cabinet-Datei nach der Rückkehr von dieser Funktion nicht vorhanden, lesbar oder beschädigt wurde, entspricht das Feld fdie einem der folgenden Werte:

  • FDIERROR_CABINET_NOT_FOUND
  • FDIERROR_NOT_A_CABINET
  • FDIERROR_UNKNOWN_CABINET_VERSION
  • FDIERROR_CORRUPT_CABINET
  • FDIERROR_BAD_COMPR_TYPE
  • FDIERROR_RESERVE_MISMATCH
  • FDIERROR_WRONG_CABINET
Wenn kein Fehler aufgetreten ist, entspricht fdie FDIERROR_NONE. Die Anwendung sollte 0 zurückgeben, um den Erfolg anzugeben, oder -1, um einen Fehler anzugeben, wodurch FDICopy abgebrochen wird.
fdintENUMERATE
0x05
Enumeration status.

Rückgabewert

Keine

Anforderungen

   
Zielplattform Windows
Kopfzeile fdi.h

Weitere Informationen

FDICopy

FDINOTIFICATION