FNFDINOTIFY 宏 (fdi.h)

FNFDINOTIFY 宏为应用程序定义的回调通知函数提供声明,以更新应用程序对解码器的状态。

语法

void FNFDINOTIFY(
   fn
);

参数

fn

通知的类型。

价值 意义
fdintCABINET_INFO
0x00
有关内阁的一般信息。

设置此值后,FDINOTIFICATION 结构将填充以下信息:

  • psz1 将指向下一个内阁的名称(不包括路径信息)
  • psz2 将指向下一个磁盘的名称
  • psz3 将指向内阁路径名称
  • setID 等于当前内阁的集 ID
  • iCabinet 将等于内阁集中的内阁号码(第一个内阁的0个,第二个内阁的1个,等等)
应用程序应返回 0 以指示成功,或 -1 指示失败,这将中止 FDICopy。 FDICopy开放的每个内阁将提供一次 fdintCABINET_INFO 通知;这包括由于跨越内阁边界的文件而打开的延续内阁。
fdintPARTIAL_FILE
0x01
内阁中的第一个文件是上一个内阁的文件的延续。

设置此值后,FDINOTIFICATION 结构将填充以下信息:

  • psz1 将指向上一个内阁中继续的文件的名称
  • psz2 将指向文件第一段所在的内阁的名称
  • psz3 将指向文件第一段所在的磁盘的名称
fdintPARTIAL_FILE 通知要求在内阁开始时从上一个内阁继续的文件。 仅当 FDICopy 在系列中的第二个或后续内阁上启动时,才会发出此通知,该系列文件继续来自上一个内阁。 应用程序应返回 0 以成功,或 -1 指示失败。
fdintCOPY_FILE
0x02
标识要复制的文件的信息。

设置此值后,FDINOTIFICATION 结构将填充以下信息:

  • psz1 将指向内阁中文件的名称
  • cb 等于文件未压缩的大小
  • 日期 等于文件的 16 位 MS-DOS 日期
  • 时间 等于文件的 16 位 MS-DOS 时间
  • 资源 等于文件的 16 位 MS-DOS 属性。 此外,如果文件名旨在解释为 UTF-8,则会设置 _A_NAME_IS_UTF 标志。

请注意,上述成员直接来自内阁文件。 如果内阁文件是恶意的,则名称可能包含非法或恶意的文件名字符。

应用程序应返回三个值之一;0 跳过文件(即不复制);-1(负一)中止 FDICopy;或指示写入文件的位置的非零(和非负一)文件句柄。 文件句柄必须与提供给 FDICreatePFNCLOSE 函数兼容。 针对当前内阁中启动的每个文件调用 fdintCOPY_FILE 通知,从而为应用程序提供请求复制或跳过文件的机会。

fdintCLOSE_FILE_INFO
0x03
关闭文件,设置相关信息。

设置此值后,FDINOTIFICATION 结构将填充以下信息:

  • psz1 将指向内阁中文件的名称
  • hf 将是文件句柄(源自 fdintCOPY_FILE
  • 日期 日期等于文件的 16 位 MS-DOS 日期
  • 时间 时间等于文件的 16 位 MS-DOS 时间
  • 属性将等于文件的 16 位 MS-DOS 属性(减去_A_EXEC位)
  • cb 等于 0 或 1,指示文件是否应在提取后执行 (1),
如果 cb 等于 1,应用程序将负责执行该文件。 在所有数据都写入目标文件后,将调用 fdintCLOSE_FILE_INFO 通知。 应用程序必须关闭文件(使用提供的 hf 句柄),并设置文件日期、时间和属性。 应用程序应返回 TRUEFALSE 或 -1 中止 FDICopy。 FDI 假定目标文件已关闭,即使此回调返回失败;FDI 不会尝试使用 PFNCLOSE 关闭文件。
fdintNEXT_CABINET
0x04
文件继续下一个内阁。

设置此值后,FDINOTIFICATION 结构将填充以下信息:

  • psz1 将指向当前文件继续的下一个内阁的名称
  • psz2 将是文件句柄(源自 fdintCOPY_FILE
  • psz3 将指向内阁路径信息
  • 直接投资 等于成功或错误值
仅当指示 fdintCOPY_FILE 将文件从后续内阁继续复制到当前内阁时,才会调用此通知。 由于应用程序可以修改内阁名称,因此在返回内阁名称之前,必须验证由 psz3指示的内阁路径名称。 此外,应用程序应确保内阁存在并在返回前可读;如有必要,应用程序应发出磁盘更改提示以确认。

当此函数返回 FDI 时,FDI 将验证提供的内阁的 setIDiCabinet 字段是否与该内阁的预期值匹配。 否则,FDI 将继续发送 fdintNEXT_CABINET 通知消息,fdie 字段设置为 FDIERROR_WRONG_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
如果没有错误,直接投资 将等于FDIERROR_NONE。 应用程序应返回 0 以指示成功,或 -1 指示失败,这将中止 FDICopy
fdintENUMERATE
0x05
枚举状态。

返回值

没有

要求

要求 价值
目标平台 窗户
标头 fdi.h

另请参阅

FDICopy

FDINOTIFICATION