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;或指示写入文件的位置的非零(和非负一)文件句柄。 文件句柄必须与提供给 FDICreate的 PFNCLOSE 函数兼容。 针对当前内阁中启动的每个文件调用 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 句柄),并设置文件日期、时间和属性。 应用程序应返回 TRUE,FALSE 或 -1 中止 FDICopy。 FDI 假定目标文件已关闭,即使此回调返回失败;FDI 不会尝试使用 PFNCLOSE 关闭文件。
|
-
fdintNEXT_CABINET
- 0x04
|
文件继续下一个内阁。
设置此值后,FDINOTIFICATION 结构将填充以下信息:
-
psz1 将指向当前文件继续的下一个内阁的名称
-
psz2 将是文件句柄(源自 fdintCOPY_FILE)
-
psz3 将指向内阁路径信息
-
直接投资 等于成功或错误值
仅当指示 fdintCOPY_FILE 将文件从后续内阁继续复制到当前内阁时,才会调用此通知。 由于应用程序可以修改内阁名称,因此在返回内阁名称之前,必须验证由 psz3指示的内阁路径名称。 此外,应用程序应确保内阁存在并在返回前可读;如有必要,应用程序应发出磁盘更改提示以确认。
当此函数返回 FDI 时,FDI 将验证提供的内阁的 setID 和 iCabinet 字段是否与该内阁的预期值匹配。 否则,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
|
枚举状态。
|
返回值
没有
要求
另请参阅
FDICopy
FDINOTIFICATION