⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wimadll.h

📁 对ima、imz压缩文件修改
💻 H
📖 第 1 页 / 共 3 页
字号:
#ifdef UNICODE
error(NOT DESIGNED FOR UNICODE)
#endif

#ifndef WIN32
error(DESIGNED FOR WIN32 ONLY)
#endif

#ifdef __cplusplus
extern "C"
{
#endif

struct str_ima_handle { int unused; };
typedef struct str_ima_handle FAR * HIMA;

#define WIMAAPI WINAPI

#ifndef CALLBACK_FILEIO_DEFINED
#define CALLBACK_FILEIO_DEFINED

typedef BOOL (WINAPI* FILEIOCALLBACK) (LPCVOID lpData,
                                       DWORD dwDataSize,
                                       LPVOID lpUsrParam);
#endif

#ifndef TYPEDISKH
typedef enum
{
  NOTHING=0,
  USED,
  ALL,
  BEGINFLOPPY,
  ONLYBOOT
} CHOICEAPP;
#endif


#ifndef _INC_DISK

#ifndef MAXLFN
#define MAXLFN 256
#endif

typedef struct
{
  char nom[8];
  char ext[3];
  char szCompactName[13];
  BYTE bAttr;

  BYTE dir_CreateMSec;
  WORD dir_CreateDate;
  WORD DosTime;
  WORD DosDate;

  BOOL fIsSubDir;
  BOOL fSel; // for private use of client app.
  BOOL fLfnEntry;
  DWORD dwSize;
  UINT uiPosInDir;
  DWORD dwLocalisation;
  DWORD dwTrueSize;
  char longname[MAXLFN];
  WORD dir_CreateTime;
  WORD dir_LastAccessDate;
} DIRINFO;
typedef DIRINFO* LPDIRINFO; // for info, huge in win16 WinImage


#ifndef EVENTNOTIF_DEFINED
#define EVENTNOTIF_DEFINED
typedef DWORD (WINAPI* EVENTNOTIFCALLBACK) (DWORD dwEvent,
                                            DWORD dwEventParam,DWORD dwWin32Err,
                                            LPVOID lpParam,LPVOID lpUsrParam);

// dwEvent contain a DWEV_xxx value, see below
// lpUsrParam contain user param gived to function

#define DWEV_ERRORSUPINFO       ((DWORD)0x7fff0001)
// IO Error with supplemental info (in ReadFloppy and WriteFloppy)
// dwEventParam = WinImage error number (see below), Bios like error number
// dwWin32Err : Win32 error number, like GetLastError()
// lpParam * pointer to an ERROR_SUPINFO structure
// return value : IDRETRY (4), IDABORT (3), IDIGNORE (5) or  IDCANCEL (2)
//   dwEventParam = 0x01         "Internal error 1\n"
//   dwEventParam = 0x02         "Address mark not found"
//   dwEventParam = 0x03         "Diskette is write-protected"
//   dwEventParam = 0x04         "Sector not found"
//   dwEventParam = 0x08         "DMA overflow"
//   dwEventParam = 0x09         "Internal error 9"
//   dwEventParam = 0x10         "Error in reading"
//   dwEventParam = 0x20         "Error in floppy adapter"
//   dwEventParam = 0x40         "Track not found"
//   dwEventParam = 0x80         "There is no floppy in the drive"
//   dwEventParam = 0x100        "Floppies do not match"


#define DWEV_ERRORWIN32         ((DWORD)0x7fff0002)
// Win32 IO Error in ReadFloppy and WriteFloppy and ReadLargeIma and WriteLargeIma
// dwEventParam = WinImage error number (see DWEV_ERRORSUPINFO), Bios like error number or 0
// dwWin32Err : Win32 error number, like GetLastError()
// return value : IDRETRY to retry (when possible)
// elsewhere (IDCANCEL or 0) to stop


#define DWEV_ERRORCANTACCESS    ((DWORD)0x7fff0003)
// in ReadFloppy* and WriteFloppy*
// "Drive cannot be accessed - Check to see if another application is using it"
// return value not used

#define DWEV_ERRORDRIVEEMPTY    ((DWORD)0x7fff0004)
// in ReadFloppy* and WriteFloppy*
// "There is no floppy in the drive"
// return value not used

#define DWEV_ERROR_NOT_MATCH    ((DWORD)0x7fff0005)
// in ReadFloppy*
// "Floppies do not match"
// return value not used

#define DWEV_UNSTDFMT           ((DWORD)0x7fff0006)
// in ReadFloppy* and WriteFloppy*
// "The current image format differs from the standard format for this disk drive"
// return value : IDCANCEL to abort, IDOK (1) or any other value to continue,

#define DWEV_UNSUPFMT           ((DWORD)0x7fff0007)
// in WriteFloppy* and WriteLargeIma
// "The current image format is not supported by the disk drive"
// return value not used

#define DWEV_DIFFTYPEDISK       ((DWORD)0x7fff0008)
// in WriteFloppy*
// "Disk and image formats do not match\nDo you want to reformat it?"
// return IDYES (6) or IDNO (7). IDNO stop, any other value continue

#define DWEV_DISKHASDATA        ((DWORD)0x7fff0009)
// in WriteFloppy*
// "Disk is not empty, all data on your disk will be lost!\nDo you want to continue?"
// return IDYES (6) or IDNO (7). IDNO stop, any other value continue

#define DWEV_PROGRESSPERCENT    ((DWORD)0x7fff000a)
// Give % progress info
// dwEventParam between 0 and 100
// for ExtractFile and InjectFile, lpParam contain a PROGRESSFILE_SUPINFO structure
// return value : IDCANCEL (2) to stop, 0 (or any other value) to continue


#define DWEV_ERRORASPI          ((DWORD)0x7fff000b)
// Aspi error in WimLargeReadAspiCDImage*
// dwEventParam contain first sector number of range error
// return value : IDABORT, IDRETRY or IDIGNORE

#define DWEV_ERRORWRITEIMAGEFILE    ((DWORD)0x7fff000c)
// error in writing image file in WimLargeReadAspiCDImage*
// dwWin32Err : Win32 error number, like GetLastError()


#define DWEV_ERRORIOCTL             ((DWORD)0x7fff000d)
// IOCTL error when reading Disk partition under Win9x
// dwEventParam is Int25/26 error value
// return value : IDCANCEL or IDRETRY

#define DWEV_ROOTREADDONE           ((DWORD)0x7fff000e)
// when reading FAT image, say when the root is read
// return value is not used

#ifndef LOCATEERROR_DEFINED
#define LOCATEERROR_DEFINED
typedef enum
{
  ON_FORMAT=0,
  ON_READ,
  ON_WRITE,
  ON_COMPARE
} LOCATEERROR;
#endif

#ifndef SUPINFOSTRUCT_DEFINED
#define SUPINFOSTRUCT_DEFINED
typedef struct
{
    DWORD dwSizeStruct;
    LOCATEERROR LocErr;
    DWORD dwHead;
    DWORD dwTrack;

    DWORD dwPosLow;
    DWORD dwPosHigh;
    DWORD dwStyleAnswer;

    DWORD dwErrNumber;
    LPCTSTR lpszErrorText;
} ERROR_SUPINFO;

// for ExtractFile and InjectFile, in event DWEV_PROGRESSPERCENT lpParam contain a
//    PROGRESSFILE_SUPINFO structure
typedef struct
{
    DWORD dwSizeStruct;
    DWORD dwCurrentPos;
    DWORD dwReserved1;
    DWORD dwTotalSize;
    DWORD dwReserved2;
    LPCTSTR lpszName;
    LPCTSTR lpszFullName;
} PROGRESSFILE_SUPINFO;
#endif

#endif

#endif


#ifndef SORT_NONE
#define SORT_NONE 72
#define SORT_NAME 73
#define SORT_EXT  74
#define SORT_SIZE 75
#define SORT_DATE 76
#endif

#ifndef CDM_ROOT
#define CDM_ROOT  50
#define CDM_UPPER 51
#define CDM_ENTRY 52 // use ChszDir
#endif


typedef enum
{
  NO_FLOPPY=0,
  FLOPPY_360,
  FLOPPY_12M,
  FLOPPY_720,
  FLOPPY_144,
  FLOPPY_288,
  LDISK_REMOVABLE,
  LDISK_HARDDISK,
  LDISK_CDROM,
  FLOPPY_LS120
} DRIVEINFO;

// HWND_NO_PROGRESS : hWnd parameter to ReadImaFile or WriteImaFile to have no
//  WinImage progress bar window
#define HWND_NO_PROGRESS ((HWND)INVALID_HANDLE_VALUE)

// CreateMemFatHima : Create an Image Object.
// you need call ReadImaFile, ReadFloppy or MakeEmptyImage
HIMA WIMAAPI CreateMemFatHima();

// CreateMemHfsHima : Create an Image Object for Mac floppy.
// you need call ReadImaFile, ReadFloppy
// extract, inject... cannot be used
HIMA WIMAAPI CreateMemHfsHima();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -