次の方法で共有


FNFDINOTIFY マクロ (fdi.h)

FNFDINOTIFY マクロは、デコーダーの状態でアプリケーションを更新するアプリケーション定義コールバック通知関数の宣言を提供します。

構文

void FNFDINOTIFY(
   fn
);

パラメーター

fn

通知の種類。

意味
fdintCABINET_INFO
0x00
キャビネットに関する一般的な情報。

この値を設定すると、 FDINOTIFICATION 構造体に次の情報が設定されます。

  • psz1 は、次のキャビネットの名前を指します (パス情報を除く)
  • psz2 は次のディスクの名前を指します
  • psz3 はキャビネット パス名を指します
  • setID は、現在のキャビネットのセット ID と等しくなります
  • iCabinet はキャビネット セット内のキャビネット番号と等しくなります (1 番目のキャビネットの場合は 0、2 番目のキャビネットの場合は 1 など)
アプリケーションは、成功を示すには 0 を返し、失敗を示す場合は -1 を返す必要があります。これにより、FDICopy が中止されます。 FDICopy によって開かれたキャビネットごとに、fdintCABINET_INFO通知が 1 回提供されます。これには、キャビネット境界にまたがるファイルが原因で開かれた継続キャビネットが含まれます。
fdintPARTIAL_FILE
0x01
キャビネット内の最初のファイルは、前のキャビネットからのファイルの継続です。

この値を設定すると、 FDINOTIFICATION 構造体に次の情報が設定されます。

  • psz1 は、前のキャビネットから続くファイルの名前を指します
  • psz2 は、ファイルの最初のセグメントが存在するキャビネットの名前を指します
  • psz3 は、ファイルの最初のセグメントが存在するディスクの名前を指します
fdintPARTIAL_FILE通知は、以前のキャビネットから継続したキャビネットの先頭にあるファイルに対して呼び出されます。 この通知は、前のキャビネットからファイルが続くシリーズの 2 番目以降のキャビネットで FDICopy が開始された場合にのみ発生します。 アプリケーションは成功した場合は 0 を返し、失敗を示す場合は -1 を返す必要があります。
fdintCOPY_FILE
0x02
コピーするファイルを識別する情報。

この値を設定すると、 FDINOTIFICATION 構造体に次の情報が設定されます。

  • psz1 はキャビネット内のファイルの名前を指します。cb はファイルの圧縮されていないサイズと等しくなります
  • date はファイルの 16 ビット MS-DOS 日付と等しくなります
  • time はファイルの 16 ビット MS-DOS 時刻と等しくなります
  • attribs は、ファイルの 16 ビット MS-DOS 属性と等しくなります
アプリケーションは、3 つの値のいずれかを返す必要があります。ファイルをスキップする (つまりコピーしない) 場合は 0。 FDICopy を中止する -1 (負の 1)。または、ファイルを書き込む場所を示す 0 以外の (および負の 1 以外の) ファイル ハンドル。 ファイル ハンドルは、FDICreate に指定された PFNCLOSE 関数と互換性がある必要があります。 fdintCOPY_FILE通知は、現在のキャビネット内で開始される各ファイルに対して呼び出され、アプリケーションがファイルのコピーまたはスキップを要求する機会を提供します。
fdintCLOSE_FILE_INFO
0x03
ファイルを閉じ、関連情報を設定します。

この値を設定すると、 FDINOTIFICATION 構造体に次の情報が設定されます。

  • psz1 はキャビネット内のファイルの名前を指します
  • hf はファイル ハンドルになります ( fdintCOPY_FILEから発生しました)
  • date date は、ファイルの 16 ビット MS-DOS 日付と等しくなります
  • time time は、ファイルの 16 ビット MS-DOS 時間と等しくなります
  • attribs 属性は、ファイルの 16 ビット MS-DOS 属性と等しくなります (_A_EXEC ビットを差し引いた値)
  • cb は、抽出 (1) の後にファイルを実行する必要があるかどうかを示す 0 または 1 のいずれかと等しくなります (0)
cb が 1 の場合、ファイルを実行するのはアプリケーションの責任です。 fdintCLOSE_FILE_INFO通知は、すべてのデータがターゲット ファイルに書き込まれた後に呼び出されます。 アプリケーションは(提供された hf ハンドルを使用して) ファイルを閉じ、ファイルの日付、時刻、および属性を設定する必要があります。 アプリケーションは TRUE を返して成功し、FDICopy を中止するには FALSE または -1 を返す必要があります。 FDI では、このコールバックからエラーが返された場合でも、ターゲット ファイルが閉じられたと見なされます。FDI は PFNCLOSE を使用してファイルを閉じようとしません。
fdintNEXT_CABINET
0x04
ファイルは次のキャビネットに続きます。

この値を設定すると、 FDINOTIFICATION 構造体に次の情報が設定されます。

  • psz1 は、現在のファイルが続く次のキャビネットの名前を指します
  • psz2 はファイル ハンドルになります ( fdintCOPY_FILEから発生しました)
  • psz3 はキャビネット パス情報を指します
  • fdie は成功またはエラー値と等しくなります
この通知は、後続のキャビネットから現在 キャビネットに続くファイルをコピーするようにfdintCOPY_FILEに指示された場合にのみ呼び出されます。 アプリケーションはキャビネット名を変更できるため、 psz3 で示されるキャビネット パス名は、返される前に検証することが重要です。 さらに、アプリケーションはキャビネットが存在し、戻る前に読み取り可能であることを確認する必要があります。必要に応じて、アプリケーションはディスク変更プロンプトを発行して確認する必要があります。

この関数が FDI に戻ると、FDI は、指定されたキャビネットの setID フィールドと iCabinet フィールドがそのキャビネットの期待値と一致することを確認します。 そうでない場合、FDI は、fdie フィールドが FDIERROR_WRONG_CABINET に設定されたfdintNEXT_CABINET通知メッセージを、正しいキャビネット ファイルが指定されるまで、またはこの関数が -1 を返して FDICopy 呼び出しを中止するまで、引き続き送信します。 この関数から戻った後、キャビネット ファイルが存在しない、読み取り可能、または破損している場合、 fdie フィールドは次のいずれかの値に等しくなります。

  • 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
エラーが発生しなかった場合、 fdie は FDIERROR_NONEと等しくなります。 アプリケーションは、成功を示すには 0 を返し、失敗を示す場合は -1 を返す必要があります。これにより、 FDICopy が中止されます。
fdintENUMERATE
0x05
列挙の状態。

戻り値

なし

必要条件

   
対象プラットフォーム Windows
ヘッダー fdi.h

関連項目

FDICopy

FDINOTIFICATION