●関数の説明

DWORD nsGcaSDK::GetStartOffset(const string& strPathName);

  自己展開形式のファイルを展開する前に呼びます。ファイルのフ
  ルパスを与え、返り値をCGca::SetStartOffsetでセットします。
  返り値が0の時は、自己展開形式ではないか、読み込みエラーが
  発生しています。


BOOL nsGcaSDK::GetSpellFromKeyFile(string &strSpell, const string &strKeyFile);

  暗号解除に使うキーファイルからパスワード生成します。生成さ
  れたパスワードは、strSpellにセットされます。キーファイルは
  フルパスで指定してください。


●クラスのメンバ関数の説明

BOOL CGca::Init(void);

  圧縮、展開に必要なバッファを確保します。かなり多くのメモリ
  を要求します。圧縮、展開を行わないときは呼び出す必要はあり
  ません。


void CGca::Free(void);

  Initで確保したメモリを開放します。呼び出すのを忘れた場合、
  デストラクタで実行されます。


void CGca::SetArcFilePath(const string &strArcFilePath);

  アーカイブファイル名をフルパスで指定します。


void CGca::SetOutputPath(const string &strOutputPath);

  展開先の場所をフルパスで指定します。


void CGca::SetRestoreDirectory(BOOL bRestoreDirectory);

  展開時にディレクトリ構造を復元します(default:TRUE)。
  FLASEを指定することで、アーカイブ内のディレクトリ構造を復元せず、
  出力先にファイルのみ展開します。


void CGca::SetCrypto(BOOL bCrypto);

  暗号解除を有効にします(展開のみ)。


void CGca::SetSpell(const string &strSpell);

  暗号解除のパスワードを指定します(展開のみ)。


void CGca::SetOrder(const vector<string> &astrOrder);

  圧縮するファイル、フォルダをフルパスで指定します。


void CGca::SetCompress(BOOL bCompress);

  ファイルの圧縮を有効にします。


void CGca::SetHeaderCompress(BOOL bHeaderCompress);

  ヘッダ圧縮を有効にします。


void CGca::SetArcType(int nType);

  アーカイブの内部形式を指定します。
  CGca::GCA0 ノーマルモード
  CGca::GCA1 ソリッドモード


void CGca::SetStartOffset(int nStartOffset);

  展開開始位置を変更します。自己展開形式のファイルの展開の時に設定します。
  必要な値はnsGcaSDK::GetStartOffsetで求めます。


void CGca::SetProgressProc(BOOL (*pfnProgress)(QWORD dwProgress, QWORD dwAll, PVOID pContext));

  進捗状況を受け取る関数を指定します。
  指定された関数が呼ばれるとき、各引数には以下の値がセットされています。
  QWORD qwProgress   : 処理した量
  QWORD qwAll        : 全体の量
  PVOID pContext     : 進捗状況を送っているCGcaのインスタンスへのポインタ


void CGca::SetMessageProc(int (*pfnMessage)(int nNum, string strFileName, PVOID pContext));

  ライブラリが送るメッセージを処理する関数を指定します。
  指定された関数が呼ばれるとき、各引数には以下の値がセットされています。
  int nNum           : メッセージのコード番号
  string strFileName : メッセージに関係するファイル名
  PVOID pContext     : メッセージを送っているCGcaのインスタンスへのポインタ


int CGca::GetArcType(void);

  アーカイブファイルの内部形式を取得します。
  CGca::GCA0 ノーマルモード
  CGca::GCA1 ソリッドモード


int CGca::GetNumFiles(void);

  アーカイブされているファイル数を取得します。


string CGca::GetFileName(int n);

  アーカイブ内のn番目のファイル名を取得します。


DWORD CGca::GetFileCRC(int n);

  アーカイブ内のn番目のファイルのCRCの値を取得します。


QWORD CGca::GetDataSize(int n);

  アーカイブ内のn番目のファイルの圧縮サイズを取得します。


QWORD CGca::GetFileSize(int n);

  アーカイブ内のn番目のファイルの圧縮前のサイズを取得します。


DWORD CGca::GetFileAttributes(int n);

  アーカイブ内のn番目のファイルの属性を取得します。


FILETIME CGca::GetFileTime(int n);

  アーカイブ内のn番目のファイルのタイムスタンプを取得します。


BOOL CGca::Archive(void);

  (未実装)設定された条件でファイルを圧縮します。


BOOL CGca::OpenArchive(void);

  展開を目的にアーカイブファイルをオープンします。
  圧縮時に呼んではいけません。


BOOL CGca::CloseArchive(void);

  オープンしているアーカイブファイルをクローズします。


BOOL CGca::Extract(void);

  設定された条件でアーカイブ内のすべてのファイルを展開します。
  CGca::GCA1(ソリッドモード)で圧縮されたファイルはできるだけこれで展開してください。
  ソリッドモードでのCGca::ExtractFileやCGca::ExtractFileToMemoryの動作は遅いです。


BOOL CGca::ExtractFile(int n);

  アーカイブファイルからn番目のファイルを展開します。
  ソリッドモードのアーカイブに対してこの関数を呼ぶと、
  メッセージGCAM_ARC_ANALYZE_SOLIDが発行されます。
  この時にGCAM_OKを返さないと、ソリッドデータの解析を中止す
  るため展開はできません。


BOOL CGca::ExtractFileToMemory(int n, BYTE *pBuffer);

  アーカイブファイルからn番目のファイルをメモリに展開します。
  BYTE *pBuffer には展開先のアドレスをセットします。


void CGca::SetUser(DWORD dwUser);

  ユーザーのデータをセットします。


DWORD CGca::GetUser(void);

  あらかじめセットされたユーザーのデータを取得します。


●メッセージ処理関数に与えられるコードの説明

GCAM_ARC_UNKNOWN_FORMAT 未知のフォーマットのアーカイブです。
GCAM_ARC_ANALYZE_SOLID  展開用にソリッドモードのアーカイブ内容を解析します。
GCAM_FILE_EXIST         書き込むファイルが既に存在しています。
GCAM_FILE_OPEN_ERROR    ファイルのオープンに失敗しました。
GCAM_ARC_READ_ERROR     アーカイブの読み込みに失敗しました。
GCAM_FILE_READ_ERROR    ファイルの読み込みに失敗しました。
GCAM_ARC_WRITE_ERROR    アーカイブの書き込みに失敗しました。
GCAM_FILE_WRITE_ERROR   ファイルの書き込みに失敗しました。
GCAM_ARC_CRC_ERROR      アーカイブヘッダのCRCが異常です。
GCAM_FILE_CRC_ERROR     ファイルのCRCが異常です。
GCAM_ARC_CRYPTO_ERROR   アーカイブの暗号解除に失敗しました。
GCAM_FILE_CRYPTO_ERROR  ファイルの暗号解除に失敗しました。
GCAM_ARC_CRYPTO         アーカイブに暗号がかかっています。
GCAM_FILE_CRYPTO        ファイルに暗号がかかっています。
GCAM_DIRECTORY_CREATE_ERROR フォルダの作成に失敗しました。
