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); }