Nilai |
Arti |
-
fdintCABINET_INFO
- 0x00
|
Informasi umum tentang kabinet.
Ketika nilai ini diatur, struktur FDINOTIFICATION diisi dengan informasi berikut:
-
psz1 akan menunjuk ke nama kabinet berikutnya (tidak termasuk informasi jalur)
-
psz2 akan menunjuk ke nama disk berikutnya
-
psz3 akan menunjuk ke nama jalur kabinet
-
setID akan sama dengan ID yang ditetapkan dari kabinet saat ini
-
iCabinet akan sama dengan nomor kabinet dalam set kabinet (0 untuk kabinet pertama, 1 untuk kabinet kedua, dll.)
Aplikasi harus mengembalikan 0 untuk menunjukkan keberhasilan, atau -1 untuk menunjukkan kegagalan, yang akan membatalkan FDICopy. Pemberitahuan fdintCABINET_INFO akan diberikan sekali untuk setiap kabinet yang dibuka oleh FDICopy; ini termasuk lemari kelanjutan yang dibuka karena file yang mencakup batas kabinet.
|
-
fdintPARTIAL_FILE
- 0x01
|
File pertama dalam kabinet adalah kelanjutan file dari kabinet sebelumnya.
Ketika nilai ini diatur, struktur FDINOTIFICATION diisi dengan informasi berikut:
-
psz1 akan menunjuk ke nama file yang dilanjutkan dari kabinet sebelumnya
-
psz2 akan menunjuk ke nama kabinet tempat segmen pertama file ada
-
psz3 akan menunjuk ke nama disk tempat segmen pertama file ada
Pemberitahuan fdintPARTIAL_FILE dipanggil untuk file di awal kabinet yang telah berlanjut dari kabinet sebelumnya. Pemberitahuan ini hanya akan terjadi ketika FDICopy dimulai pada kabinet kedua atau berikutnya dalam seri, yang memiliki file yang dilanjutkan dari kabinet sebelumnya. Aplikasi harus mengembalikan 0 agar berhasil, atau -1 untuk menunjukkan kegagalan.
|
-
fdintCOPY_FILE
- 0x02
|
Informasi yang mengidentifikasi file yang akan disalin.
Ketika nilai ini diatur, struktur FDINOTIFICATION diisi dengan informasi berikut:
-
psz1 akan menunjuk ke nama file di kabinet
-
cb akan sama dengan ukuran file yang tidak dikompresi
-
tanggal akan sama dengan tanggal MS-DOS 16-bit file
-
waktu akan sama dengan waktu MS-DOS 16-bit file
-
attrib akan sama dengan atribut MS-DOS 16-bit file. Selain itu, bendera _A_NAME_IS_UTF diatur jika nama file dimaksudkan untuk ditafsirkan sebagai UTF-8.
Perhatikan bahwa anggota di atas berasal langsung dari file kabinet.
Jika file kabinet berbahaya, nama mungkin berisi karakter nama file ilegal atau berbahaya.
Aplikasi harus mengembalikan salah satu dari tiga nilai; 0 untuk melewati (yaitu tidak menyalin) file; -1 (negatif satu) untuk membatalkanFDICopy ; atau handel file nonzero (dan non-negatif-one) yang menunjukkan tempat untuk menulis file. Handel file harus kompatibel dengan fungsi PFNCLOSE yang disediakan untuk FDICreate. Pemberitahuan fdintCOPY_FILE dipanggil untuk setiap file yang dimulai dalam kabinet saat ini, memberikan kesempatan bagi aplikasi untuk meminta agar file disalin atau dilewati.
|
-
fdintCLOSE_FILE_INFO
- 0x03
|
Tutup file, atur informasi yang relevan.
Ketika nilai ini diatur, struktur FDINOTIFICATION diisi dengan informasi berikut:
-
psz1 akan menunjuk ke nama file di kabinet
-
hf akan menjadi handel file (yang berasal dari fdintCOPY_FILE)
- tanggal tanggal akan sama dengan tanggal MS-DOS 16-bit file
-
waktu waktu akan sama dengan waktu MS-DOS 16-bit file
-
attrib atribut akan sama dengan atribut MS-DOS 16-bit file (dikurangi bit _A_EXEC)
-
cb akan sama dengan 0 atau 1, menunjukkan apakah file harus dijalankan setelah ekstrak (1), atau tidak (0)
Adalah tanggung jawab aplikasi untuk menjalankan file jika cb sama dengan 1. Pemberitahuan fdintCLOSE_FILE_INFO dipanggil setelah semua data ditulis ke file target. Aplikasi harus menutup file (menggunakan handel hf yang disediakan), dan mengatur tanggal, waktu, dan atribut file. Aplikasi harus mengembalikan TRUE agar berhasil, dan FALSE atau -1 untuk membatalkan FDICopy. FDI mengasumsikan bahwa file target ditutup, bahkan jika panggilan balik ini mengembalikan kegagalan; FDI tidak akan mencoba menggunakan PFNCLOSE untuk menutup file.
|
-
fdintNEXT_CABINET
- 0x04
|
File berlanjut ke kabinet berikutnya.
Ketika nilai ini diatur, struktur FDINOTIFICATION diisi dengan informasi berikut:
-
psz1 akan menunjuk ke nama kabinet berikutnya di mana file saat ini dilanjutkan
-
psz2 akan menjadi handel file (yang berasal dari fdintCOPY_FILE)
-
psz3 akan menunjuk ke informasi jalur kabinet
-
fdie akan sama dengan nilai keberhasilan atau kesalahan
Pemberitahuan ini dipanggil hanya jika fdintCOPY_FILE diinstruksikan untuk menyalin file, yang dilanjutkan dari kabinet berikutnya, ke kabinet saat ini . Karena dimungkinkan bagi aplikasi untuk memodifikasi nama kabinet, penting bahwa nama jalur kabinet, yang ditunjukkan oleh psz3, divalidasi sebelum dikembalikan. Selain itu, aplikasi harus memastikan bahwa kabinet ada dan dapat dibaca sebelum kembali; jika perlu, aplikasi harus mengeluarkan permintaan perubahan disk untuk mengonfirmasi.
Ketika fungsi ini kembali ke FDI, FDI akan memverifikasi bahwa setID dan iCabinet bidang kabinet yang disediakan cocok dengan nilai yang diharapkan untuk kabinet tersebut. Jika tidak, FDI akan terus mengirim pesan pemberitahuan fdintNEXT_CABINET dengan bidang fdie diatur ke FDIERROR_WRONG_CABINET, hingga file kabinet yang benar ditentukan, atau sampai fungsi ini mengembalikan -1 dan membatalkan panggilan FDICopy . Jika, setelah dikembalikan dari fungsi ini, file kabinet tidak ada, dapat dibaca, atau telah rusak, maka bidang fdie akan sama dengan salah satu nilai berikut:
-
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
Jika tidak ada kesalahan, fdie akan sama dengan FDIERROR_NONE. Aplikasi harus mengembalikan 0 untuk menunjukkan keberhasilan, atau -1 untuk menunjukkan kegagalan, yang akan membatalkan FDICopy.
|
-
fdintENUMERATE
- 0x05
|
Status enumerasi.
|