富士通アドバンストソリューションズ

  1. ホーム >
  2. サポート & ダウンロード >
  3. データ圧縮ツール「縮丸」 プログラム組み込みに関する情報(Windows版)

データ圧縮ツール「縮丸」 プログラム組み込みに関する情報(Windows版)

     Visual Basic版サンプルプログラムダウンロード(自己解凍型ファイル:191KB)

     Visual C++版サンプルプログラムダウンロード(自己解凍型ファイル:272KB)

  縮丸V5(Windows版)ヘッダーファイルのサンプル(dcom32l.h)

        ※API宣言に「extern "C"」の属性を追記して下さい。

縮丸V5(Windows版)ヘッダーファイルサンプル

#ifdef _WIN32
   #define DllImport __declspec( dllimport )
   #define DllExport __declspec( dllexport )
#else
   #ifdef _DOS
      #define DllImport
      #define DllExport
   #else
      #define DllImport
      #define DllExport __export
   #endif
#endif
/* 圧縮/解凍エンジン */
extern "C" int blend(int);
extern "C" DWORD fldc3(int);
extern "C" DWORD slca(int);

extern "C" DWORD batch_fldc3(int);

/* 共通ファイルヘッダー */
typedef struct _stCommonFileHeader {
   BYTE bEncodeType; /* 符号化タイプ:(上位4ビット)圧縮形式,(下位4ビット)機能種別*/
   BYTE bVersion; /* 方式版数 */
   BYTE bFileType; /* ファイルタイプ */
   BYTE bReserve[2]; /* 予備 */
} stCommonFileHeader;

/* 書庫ファイルヘッダー */
typedef struct _stArchiveFileHeader {
   stCommonFileHeader h;
   WORD   wFileCount; /* 書庫中のファイルの個数 */
} stArchiveFileHeader;

/* 新共通ファイルヘッダー */
typedef struct _stCommonFileHeader2 {
   BYTE bEncodeType2; /* 符号化タイプ:(上位4ビット)圧縮形式、(下位4ビット)機能種別 */
   BYTE bVersion2; /* 方式版数 */
   BYTE bFileType2; /* ファイルタイプ */
   BYTE bReserve2[5]; /* 予備 */
} stCommonFileHeader2;

/* 新書庫ファイルヘッダー */
typedef struct _stArchiveFileHeader2 {
   stCommonFileHeader2 h2;
   LONG wFileCount2; /* 書庫中のファイルの個数 */
   struct { /* 日付時間 */
      BYTE cYear; /* 年(西暦-1900) */
   BYTE cMonth; /* 月 */
   BYTE cDay; /* 日 */
   BYTE cHour; /* 時 */
   BYTE cMinute; /* 分 */
   BYTE cSecond; /* 秒 */
   } ArcDate;
   BYTE bReserve3[54]; /* 予備 */
} stArchiveFileHeader2;

/* バッチインターフェースへの対応 */
/* 拡張縮丸ヘッダー */
typedef struct _stExtHeader {
   char cDesc[2]; /* 識別子 */
   char cReserver_1[8]; /* 予備 */
   char cDataSet; /* 平文データセット編成 */
   char cRecType; /* 平文レコード形式 */
   char cBlockLength[2]; /* 平文ブロック長 */
   char cRecLength[2]; /* 平文レコード長 */
   char cDataSetName[44]; /* 平文データセット名 */
   char cNumOfBlock[4]; /* 平文ブロック数 */
   char cReserver_2[27]; /* 予備 */
} stExtHeader;
typedef stExtHeader FAR *LPstExtHeader;

#pragma pack(4)

/* バッチインターフェースへの対応 VBインターフェース */
/* 拡張縮丸ヘッダー */
typedef struct _stExtHeaderVB {
   char cDesc[2]; /* 識別子 */
   LONG cDataSet; /* 平文データセット編成 */
    LONG cRecType; /* 平文レコード形式 */
   LONG cBlockLength; /* 平文ブロック長 */
   LONG cRecLength; /* 平文レコード長 */
   char cDataSetName[44]; /* 平文データセット名 */
   LONG cNumOfBlock; /* 平文ブロック数 */
} stExtHeaderVB;
typedef stExtHeaderVB FAR *LPstExtHeaderVB;

/* 単一ファイル操作 */
/* 圧縮 */
extern "C" DWORD DllExport WINAPI dcom_CompressFile(const HWND, LPCSTR, LPCSTR, const DWORD);
extern "C" DWORD DllExport WINAPI dcom_CompressFileExt(const HWND, LPCSTR, LPCSTR, const DWORD, LPstExtHeaderVB);

/* 解凍 */
extern "C" DWORD DllExport WINAPI dcom_ExtractFile(const HWND, LPCSTR, LPCSTR, const DWORD);
extern "C" DWORD DllExport WINAPI dcom_ExtractFileExt(const HWND, LPCSTR, LPCSTR, const DWORD, LPstExtHeaderVB);

extern "C" DWORD DllExport WINAPI dcom_GetFileEncodeType(LPCSTR);


//#pragma pack(4)

/* 書庫の中の圧縮ファイル情報 */
typedef struct _stCompressedFileInfo {
   BYTE bDeleteFlg; /* 削除フラグ */
   WORD wFileNameSize;
   char szFileName[FILENAME_MAX+1]; /* ファイル名 */
   DWORD dwCompressedSize; /* 圧縮ファイル長 */
   DWORD dwOriginalSize; /* 元ファイル長 */
    struct { /* 日付時間 */
      BYTE cYear; /* 年(西暦-1900)*/
      BYTE cMonth; /* 月 */
      BYTE cDay; /* 日 */
      BYTE cHour; /* 時 */
      BYTE cMinute; /* 分 */
      BYTE cSecond; /* 秒 */
   }Date;
   BYTE bAttribute; /* 属性 */
   LONG lFilePointer; /* 圧縮ファイルの書庫の中での格納位置 */
   _int64 dwCompressedSize2; /* 圧縮ファイル長 int64 */
   _int64 dwOriginalSize2; /* 元ファイル長 int64 */
   LONG lFilePointerH; /* 圧縮ファイルの書庫の中での格納位置 High */
   char hdFlg[4]; /* ファイルヘッダー識別子 */
   BYTE platformFlg; /* プラットフォーム識別子 */
   BYTE charcodeFlg; /* 文字コード識別 */
   char accsessFlg[2]; /* アクセス権限 */
   BYTE DataLengType; /* データ長タイプ */
} stCompressedFileInfo;
typedef stCompressedFileInfo FAR *LPstCompressedFileInfo;



/* 書庫コントロール領域 */
typedef struct _stArchiveControl {
   HANDLE ArcFileHandle;
   BYTE bCmpEngine;
   LONG lCurrentFilePointer;
   WORD wFileCount;
   WORD wIndex;
   BOOL bAllocated;
   stCompressedFileInfo *FileInfoTable;
   LONG lCurrentFilePointerH;
   LONG wFileCount2;
} stArchiveControl;
typedef stArchiveControl FAR *LPstArchiveControl;


typedef LPstArchiveControl HARC;


/* 書庫の操作 */
/* 書庫オープン */
extern "C" HARC DllExport WINAPI dcom_OpenArchive(const HWND, LPCSTR, const DWORD, LPDWORD);
extern "C" HARC DllExport WINAPI dcom2_OpenArchive(const HWND, LPCSTR, const DWORD, LPDWORD);
extern "C" DWORD DllExport WINAPI dcom_ArchiveCheck(const HWND, LPCSTR);


/* 書庫クローズ */
extern "C" DWORD DllExport WINAPI dcom_CloseArchive(HARC);
extern "C" DWORD DllExport WINAPI dcom2_CloseArchive(HARC);


/* ファイル検索1回目 */
extern "C" DWORD DllExport WINAPI dcom_FindFirst(HARC, LPCSTR, LPstCompressedFileInfo);
extern "C" DWORD DllExport WINAPI dcom2_FindFirst(HARC, LPCSTR, LPstCompressedFileInfo);


/* ファイル検索2回以降 */
extern "C" DWORD DllExport WINAPI dcom_FindNext(HARC, LPstCompressedFileInfo);
extern "C" DWORD DllExport WINAPI dcom2_FindNext(HARC, LPstCompressedFileInfo);


/* 書庫へのファイルの追加(圧縮) */
extern "C" DWORD DllExport WINAPI dcom_CompressToArchive(const HWND, HARC, LPCSTR, const DWORD);
extern "C" DWORD DllExport WINAPI dcom2_CompressToArchive(const HWND, HARC, LPCSTR, const DWORD);


/* 書庫からのファイルの解凍*/
extern "C" DWORD DllExport WINAPI dcom_ExtractFromArchiveByName(const HWND, HARC, LPCSTR, LPCSTR, const DWORD);
extern "C" DWORD DllExport WINAPI dcom2_ExtractFromArchiveByName(const HWND, HARC, LPCSTR, LPCSTR, const DWORD);


/* 書庫からのファイルの解凍*/
extern "C" DWORD DllExport WINAPI dcom_ExtractFromArchiveByPointer(const HWND, HARC, const LONG, LPCSTR, const DWORD);
extern "C" DWORD DllExport WINAPI dcom2_ExtractFromArchiveByPointer(const HWND, HARC, const LONG, LPCSTR, const DWORD);


/* 書庫に入っているファイルの数 */
extern "C" DWORD DllExport WINAPI dcom_GetFileCount(HARC);
extern "C" LONG DllExport WINAPI dcom2_GetFileCount(HARC);

extern "C" DWORD DllExport WINAPI dcom_AllocFileInfoTable(HARC);
extern "C" DWORD DllExport WINAPI dcom_FreeFileInfoTable(HARC);
extern "C" DWORD DllExport WINAPI dcom_SortFileInfoTable(HARC, const DWORD, const DWORD);
extern "C" DWORD DllExport WINAPI dcom2_AllocFileInfoTable(HARC);
extern "C" DWORD DllExport WINAPI dcom2_FreeFileInfoTable(HARC);
extern "C" DWORD DllExport WINAPI dcom2_SortFileInfoTable(HARC, const DWORD, const DWORD);

/* 圧縮形式取得 */
extern "C" DWORD DllExport WINAPI dcom_GetEncodeType(HARC);


extern "C" DWORD DllExport WINAPI dcom_DispErrMsg(const HWND, DWORD);
extern "C" DWORD DllExport WINAPI dcom_ExtractShowDlg(const HWND);
extern "C" DWORD DllExport WINAPI dcom_ExtractCloseDlg(void);


/* メモリの圧縮/解凍 VBが呼び出すDLL */
extern "C" DWORD DllExport WINAPI dcom_ManMemory(LPCSTR, LPCSTR, DWORD, DWORD, const DWORD);


/* メモリの圧縮/解凍 */
extern "C" DWORD DllExport WINAPI dcom_CompressMemory(LPBYTE, int, LPBYTE, int *, const DWORD);
extern "C" DWORD DllExport WINAPI dcom_ExtractMemory(LPBYTE, int, LPBYTE, int *, const DWORD);


/* ファイルの暗号化/復号 */
extern "C" DWORD DllExport WINAPI dcom2_CryptEncodeFile(const HWND, LPCSTR, LPCSTR, LPCSTR, const DWORD);
extern "C" DWORD DllExport WINAPI dcom2_CryptDecodeFile(const HWND, LPCSTR, LPCSTR, LPCSTR, const DWORD);


/* メモリの暗号化/復号 */
extern "C" DWORD DllExport WINAPI dcom_CryptEncodeMemory(LPBYTE, LPBYTE, UINT, LPCSTR, const DWORD);
extern "C" DWORD DllExport WINAPI dcom_CryptDecodeMemory(LPBYTE, LPBYTE, UINT, LPCSTR, const DWORD);


/* 暗号形式取得 */
extern "C" DWORD DllExport WINAPI dcom2_GetFileCryptType(LPCSTR);


/* 暗号ライブラリ有無判定 */
extern "C" BOOL DllExport WINAPI dcom_IsCryptLibrary(const DWORD);


/* ファイル機能種別取得 */
extern "C" DWORD DllExport WINAPI dcom_GetFileFunctionMode(LPCSTR);


/* 書庫からファイルを削除 */
extern "C" DWORD DllExport WINAPI dcom2_DeleteFromArchiveByPointer(const HWND, HARC, const LONG, const LONG);


/* 書庫の複写 */
extern "C" DWORD DllExport WINAPI dcom2_CopyArchive(const HWND, LPCSTR, LPCSTR, const DWORD);


/* 書庫のファイルを更新(圧縮) */
extern "C" DWORD DllExport WINAPI dcom2_OverwriteCompressToArchive(const HWND, HARC, LPCSTR, const DWORD);


/* ファイル上書きチェック */
extern "C" DWORD DllExport WINAPI dcom_CheckOverwriteFile(const HWND hwnd, LPCSTR lpszFileName, const DWORD dwMode);


/* 削除中ダイアログを表示 */
extern "C" DWORD DllExport WINAPI dcom_ShowDeleteDlg(const HWND);


/* 削除中ダイアログを消去 */
extern "C" DWORD DllExport WINAPI dcom_CloseDeleteDlg(void);


/* メッセージテーブル構造体定義 */
typedef struct _stMsgTable {
   DWORD dwMsgCode;
   LPSTR lpszMsg;
} stMsgTable;
typedef stMsgTable FAR *LPstMsgTable;


/* データの読み込みモード */
typedef enum _enInputMode {
    MEMORY_BUFFER, /* メモリバッファから */
   FILE_EOF, /* ファイルから(EOFが終端) */
   FILE_LENGTH /* ファイルから(長さ指定) */
} enInputMode;


/* 圧縮/解凍処理時のファイル名をセット */
extern "C" DWORD DllExport WINAPI dcom_SetFileName(LPCSTR);


/* レジスト関係 */
extern "C" long DllExport WINAPI RegCheckTrial(viod);


/* 検索(正規表現)で使用したメモリの解放 */
extern "C" VOID re_free(VOID);