다음을 통해 공유


FNFDINOTIFY 매크로(fdi.h)

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는 제공된 캐비닛의 setIDiCabinet 필드가 해당 캐비닛의 예상 값과 일치하는지 확인합니다. 그렇지 않은 경우 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