示例#1
0
        private CatalogFileRecord(byte[] bytes, int offset, string volumeName, string fileName)
        {
            VolumeName          = volumeName;
            FileName            = fileName;
            KeyLength           = Helper.SwapEndianness(BitConverter.ToUInt16(bytes, offset));
            ParentCatalogNodeId = Helper.SwapEndianness(BitConverter.ToUInt32(bytes, offset + 0x02));
            Name = GetHfsString(bytes, offset + 0x06);

            int dataOffset = offset + KeyLength + 0x02;

            RecordType       = (RECORD_TYPE)Helper.SwapEndianness(BitConverter.ToUInt16(bytes, dataOffset));
            Flags            = (FILE_FLAGS)Helper.SwapEndianness(BitConverter.ToUInt16(bytes, dataOffset + 0x02));
            CatalogNodeId    = Helper.SwapEndianness(BitConverter.ToUInt32(bytes, dataOffset + 0x08));
            CreateDate       = Helper.FromOSXTime(Helper.SwapEndianness(BitConverter.ToUInt32(bytes, dataOffset + 0x0C)));
            ContentModDate   = Helper.FromOSXTime(Helper.SwapEndianness(BitConverter.ToUInt32(bytes, dataOffset + 0x10)));
            AttributeModDate = Helper.FromOSXTime(Helper.SwapEndianness(BitConverter.ToUInt32(bytes, dataOffset + 0x14)));
            AccessDate       = Helper.FromOSXTime(Helper.SwapEndianness(BitConverter.ToUInt32(bytes, dataOffset + 0x18)));
            BackupDate       = Helper.FromOSXTime(Helper.SwapEndianness(BitConverter.ToUInt32(bytes, dataOffset + 0x1C)));
            Permissions      = BSDInfo.Get(bytes, dataOffset + 0x20);
            UserInfo         = FileInfo.Get(bytes, dataOffset + 0x30);
            FinderInfo       = ExtendedFileInfo.Get(bytes, dataOffset + 0x40);
            TextEncoding     = (CatalogFile.TEXT_ENCODING)Helper.SwapEndianness(BitConverter.ToUInt32(bytes, dataOffset + 0x50));

            VolumeHeader volHeader = VolumeHeader.Get(volumeName);

            DataFork     = ForkData.Get(bytes, dataOffset + 0x58, volumeName, volHeader.BlockSize);
            ResourceFork = ForkData.Get(bytes, dataOffset + 0xA8, volumeName, volHeader.BlockSize);
        }
 private static extern IntPtr CreateFile(string fileName,
                                         FILE_ACCESS_RIGHTS access,
                                         FileShare share,
                                         int securityAttributes,
                                         FileMode creation,
                                         FILE_FLAGS flags,
                                         IntPtr templateFile);
 private static extern IntPtr CreateFile(string fileName, 
     FILE_ACCESS_RIGHTS access,
     FileShare share,
     int securityAttributes,
     FileMode creation,
     FILE_FLAGS flags,
     IntPtr templateFile);
 private static extern SafeFileHandle CreateFile(
     string name,
     FileAccess access,
     FileShare share,
     IntPtr security,
     FileMode mode,
     FILE_FLAGS flags,
     IntPtr templateFile);
 private static extern SafeFileHandle CreateFile(
     string name,
     FileAccess access,
     FileShare share,
     IntPtr security,
     FileMode mode,
     FILE_FLAGS flags,
     IntPtr templateFile);