Exemple #1
0
    static bool WriteImportFile(IntPtr hMpq, string impFile, List <ImportFile> fileList)
    {
        var data = GenImpFile(fileList);

        if (data == null)
        {
            return(StormLib.SFileRemoveFile(hMpq, impFile, 0u));
        }

        var buffer = Marshal.AllocHGlobal(data.Length);

        Marshal.Copy(data, 0, buffer, data.Length);

        var    result = true;
        IntPtr hFile;

        if (result &= StormLib.SFileCreateFile(hMpq, impFile, 0ul, (uint)data.Length, 0u, 0x80000200u, out hFile))
        {
            result &= StormLib.SFileWriteFile(hFile, buffer, (uint)data.Length, 0x2u);
        }

        if (result &= (hFile != IntPtr.Zero))
        {
            result &= StormLib.SFileFinishFile(hFile);
        }

        Marshal.FreeHGlobal(buffer);

        return(result);
    }