FNFDINOTIFY 매크로는 애플리케이션 정의 콜백 알림 함수에 대한 선언을 제공하여 디코더의 상태에 따라 애플리케이션을 업데이트합니다.
통사론
void FNFDINOTIFY(
fn
);
매개 변수
fn
알림 유형입니다.
값 |
의미 |
-
fdintCABINET_INFO
- 0x00
|
캐비닛에 대한 일반 정보입니다.
이 값을 설정하면 FDINOTIFICATION 구조체가 다음 정보로 채워집니다.
-
psz1 다음 캐비닛의 이름을 가리킵니다(경로 정보 제외).
-
psz2 다음 디스크의 이름을 가리킵니다.
-
psz3 캐비닛 경로 이름을 가리킵니다.
-
setID 현재 캐비닛의 집합 ID와 같습니다.
-
iCabinet 캐비닛 집합 내의 캐비닛 번호와 같습니다(첫 번째 캐비닛의 경우 0, 두 번째 캐비닛의 경우 1 등).
애플리케이션은 성공을 나타내기 위해 0을 반환하거나 FDICopy를 중단하는 오류를 나타내는 -1 반환해야 합니다.
fdintCABINET_INFO 알림은 FDICopy;이 여는 각 캐비닛에 대해 한 번 제공됩니다. 여기에는 캐비닛 경계에 걸쳐 있는 파일로 인해 열린 연속 캐비닛이 포함됩니다.
|
-
fdintPARTIAL_FILE
- 0x01
|
캐비닛의 첫 번째 파일은 이전 캐비닛의 파일 연속입니다.
이 값을 설정하면 FDINOTIFICATION 구조체가 다음 정보로 채워집니다.
-
psz1 이전 캐비닛에서 계속된 파일의 이름을 가리킵니다.
-
psz2 파일의 첫 번째 세그먼트가 있는 캐비닛의 이름을 가리킵니다.
-
psz3 파일의 첫 번째 세그먼트가 있는 디스크의 이름을 가리킵니다.
fdintPARTIAL_FILE 알림은 이전 캐비닛에서 계속된 캐비닛의 시작 부분에 있는 파일에 대해 호출됩니다. 이 알림은 이전 캐비닛에서 파일이 계속된 시리즈의 두 번째 또는 후속 캐비닛에서 FDICopy 시작된 경우에만 발생합니다. 애플리케이션은 성공하려면 0을 반환하거나 실패를 나타내는 -1 반환해야 합니다.
|
-
fdintCOPY_FILE
- 0x02
|
복사할 파일을 식별하는 정보입니다.
이 값을 설정하면 FDINOTIFICATION 구조체가 다음 정보로 채워집니다.
-
psz1 캐비닛에 있는 파일의 이름을 가리킵니다.
-
cb 파일의 압축되지 않은 크기와 같습니다.
-
날짜 파일의 16비트 MS-DOS 날짜와 같습니다.
-
시간 파일의 16비트 MS-DOS 시간과 같습니다.
-
attribs 파일의 16비트 MS-DOS 특성과 같습니다. 또한 파일 이름을 UTF-8로 해석하려는 경우 _A_NAME_IS_UTF 플래그가 설정됩니다.
위의 멤버는 캐비닛 파일에서 직접 가져옵니다.
캐비닛 파일이 악성인 경우 이름에 불법 또는 악성 파일 이름 문자가 포함될 수 있습니다.
애플리케이션은 세 가지 값 중 하나를 반환해야 합니다. 파일을 건너뛰려면(즉, 복사하지 않음) 0입니다. FDICopy중단하도록 -1(음수)입니다. 또는 파일을 쓸 위치를 나타내는 0이 아닌(및 음수가 아닌) 파일 핸들입니다. 파일 핸들은 FDICreate제공된 PFNCLOSE 함수와 호환되어야 합니다. 현재 캐비닛 내에서 시작하는 각 파일에 대해 fdintCOPY_FILE 알림이 호출되므로 애플리케이션에서 파일 복사 또는 건너뛰기를 요청할 수 있습니다.
|
-
fdintCLOSE_FILE_INFO
- 0x03
|
파일을 닫고 관련 정보를 설정합니다.
이 값을 설정하면 FDINOTIFICATION 구조체가 다음 정보로 채워집니다.
-
psz1 캐비닛에 있는 파일의 이름을 가리킵니다.
-
hf 파일 핸들(fdintCOPY_FILE시작)입니다.
-
날짜 날짜는 파일의 16비트 MS-DOS 날짜와 같습니다.
-
시간 시간은 파일의 16비트 MS-DOS 시간과 같습니다.
-
attribs 특성은 파일의 16비트 MS-DOS 특성과 같습니다(_A_EXEC 비트 제외).
-
cb 추출 후 파일을 실행할지 여부를 나타내는 0 또는 1과 같으며( 0)
cb 1인 경우 파일을 실행하는 것은 애플리케이션의 책임입니다. 모든 데이터가 대상 파일에 기록된 후 fdintCLOSE_FILE_INFO 알림이 호출됩니다. 애플리케이션은 제공된 hf 핸들을 사용하여 파일을 닫고 파일 날짜, 시간 및 특성을 설정해야 합니다. 애플리케이션은 성공하려면 TRUE 반환하고, FALSE 또는 -1 FDICopy중단하도록 . FDI는 이 콜백이 실패를 반환하더라도 대상 파일이 닫혔다고 가정합니다. FDI는 PFNCLOSE 사용하여 파일을 닫으려고 시도하지 않습니다.
|
-
fdintNEXT_CABINET
- 0x04
|
파일은 다음 캐비닛으로 계속 진행되었습니다.
이 값을 설정하면 FDINOTIFICATION 구조체가 다음 정보로 채워집니다.
-
psz1 현재 파일이 계속되는 다음 캐비닛의 이름을 가리킵니다.
-
psz2 파일 핸들(fdintCOPY_FILE시작)이 됩니다.
-
psz3 캐비닛 경로 정보를 가리킵니다.
-
fdie 성공 또는 오류 값과 같습니다.
이 알림은 후속 캐비닛에서 현재 캐비닛으로 계속되는 파일을 복사하도록 fdintCOPY_FILE 지시된 경우에만 호출됩니다. 애플리케이션에서 캐비닛 이름을 수정할 수 있으므로 psz3표시된 캐비닛 경로 이름은 반환되기 전에 유효성을 검사해야 합니다. 또한 애플리케이션은 캐비닛이 존재하고 반환하기 전에 읽을 수 있는지 확인해야 합니다. 필요한 경우 애플리케이션은 디스크 변경 프롬프트를 실행하여 확인해야 합니다.
이 함수가 FDI로 돌아오면 FDI는 제공된 캐비닛의 setID 및 iCabinet 필드가 해당 캐비닛의 예상 값과 일치하는지 확인합니다. 그렇지 않은 경우 FDI는 올바른 캐비닛 파일이 지정될 때까지 또는 이 함수가 -1 반환하고 FDICopy 호출을 중단할 때까지 fdie 필드가 FDIERROR_WRONG_CABINET설정된 fdintNEXT_CABINET 알림 메시지를 계속 보냅니다. 이 함수에서 반환한 후 캐비닛 파일이 없거나 읽을 수 있거나 손상된 경우 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