|
分類:[.NET 全般]
VS2010 .net3.5 C# Win7 32/64 お世話になります。
Tar32.dllでtarファイルの復元をしようとしていますが、うまくいかないため、 アドバイスをいただけないでしょうか。
[DllImport("tar32.dll", CharSet = CharSet.Ansi)] public static extern int TarGetArchiveType(string strFileName);
[DllImport("tar32.dll", CharSet = CharSet.Ansi)] public static extern UInt16 TarGetVersion();
[DllImport("tar32.dll", CharSet = CharSet.Ansi)] public static extern IntPtr TarOpenArchive(IntPtr hWnd,string strFileName, uint nMode);
[DllImport("tar32.dll", CharSet = CharSet.Ansi)] public static extern Int32 TarFindFirst(IntPtr hArc, string strWildName, [Out] INDIVIDUALINFO lpSubInfo);
[StructLayout(LayoutKind.Sequential)] public struct INDIVIDUALINFO{ UInt32 dwOriginalSize; UInt32 dwCompressedSize; UInt32 dwCRC; UInt32 uFlag; UInt32 uOSType; UInt16 wRatio; UInt16 wDate; UInt16 wTime; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 513)] Char [] szFileName; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] Char [] dummy; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] Char [] szAttribute; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] Char [] szMode;
UInt16 ver = TarGetVersion(); →正常に取れている int n = TarGetArchiveType(@"hoge.tar"); →正常に取れている
IntPtr pt = TarOpenArchive(this.Handle, @"hoge.tar", 0); →ハンドル値が入っている INDIVIDUALINFO ii = new INDIVIDUALINFO(); Int32 nnn = TarFindFirst(pt, "*.*", ii); →戻り値0で正常のように見えるが、iiには何も入っていない。
問題点などご指摘いただきたく、よろしくお願いします。
|