FNFDINOTIFY 매크로(fdi.h)

FNFDINOTIFY 매크로는 애플리케이션 정의 콜백 알림 함수에 대한 선언을 제공하여 디코더의 상태 애플리케이션을 업데이트합니다.

구문

void FNFDINOTIFY(
   fn
);

매개 변수

fn

알림의 형식입니다.

의미
fdintCABINET_INFO
0x00
캐비닛에 대한 일반 정보입니다.

이 값을 설정하면 FDINOTIFICATION 구조체가 다음 정보로 채워집니다.

  • psz1 은 다음 캐비닛의 이름을 가리킵니다(경로 정보 제외).
  • psz2 는 다음 디스크의 이름을 가리킵니다.
  • psz3 은 캐비닛 경로 이름을 가리킵니다.
  • setID 는 현재 캐비닛의 설정된 ID와 같습니다.
  • iCabinet 은 캐비닛 집합 내의 캐비닛 번호와 같습니다(첫 번째 캐비닛의 경우 0, 두 번째 캐비닛의 경우 1 등).
애플리케이션은 성공을 나타내기 위해 0을 반환하거나 FDICopy를 중단하는 오류를 나타내기 위해 -1을 반환해야 합니다. 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 시간과 같습니다.
  • attribs 는 파일의 16비트 MS-DOS 특성과 같습니다.
애플리케이션은 세 가지 값 중 하나를 반환해야 합니다. 파일을 건너뛰려면(즉, 복사하지 않음) 0입니다. -1(음수 1)을 사용하여 FDICopy를 중단합니다. 또는 파일을 쓸 위치를 나타내는 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과 같음(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는 제공된 캐비닛의 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을 반환하거나 FDICopy를 중단하는 오류를 나타내기 위해 -1을 반환해야 합니다.
fdintENUMERATE
0x05
열거형 상태.

반환 값

없음

요구 사항

   
대상 플랫폼 Windows
헤더 fdi.h

추가 정보

FDICopy

FDINOTIFICATION