public static extern bool SFileOpenArchive([MarshalAs(UnmanagedType.LPTStr)] string szMpqName, uint dwPriority, SFileOpenArchiveFlags dwFlags, out MpqArchiveSafeHandle phMpq);
 public static extern bool SFileOpenPatchArchive(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPTStr)] string szPatchMpqName, [MarshalAs(UnmanagedType.LPStr)] string szPatchPathPrefix, uint dwFlags);
 public static extern bool SFileHasFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName);
 public static extern bool SFileSetMaxFileCount(MpqArchiveSafeHandle hMpq, uint dwMaxFileCount);
 public static extern bool SFileSetAttributes(MpqArchiveSafeHandle hMpq, uint dwFlags);
 public static extern int SFileAddListFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szListFile);
 public static extern bool SFileCompactArchive(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szListFile, bool bReserved);
 public static extern int SFileEnumLocales(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName, IntPtr plcLocales, ref uint pdwMaxLocales, uint dwSearchScope);
 public static extern bool SFileCreateFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szArchiveName, ulong fileTime, uint dwFileSize, uint lcLocale, uint dwFlags, out IntPtr phFile);
 public static extern IntPtr SListFileFindFirstFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szListFile, [MarshalAs(UnmanagedType.LPStr)] string szMask, [In, Out] ref _SFILE_FIND_DATA lpFindFileData);
 public static extern bool SFileCreateArchive([MarshalAs(UnmanagedType.LPTStr)] string szMpqName, uint dwCreateFlags, uint dwMaxFileCount, out MpqArchiveSafeHandle phMpq);
 public static extern uint SFileVerifyArchive(MpqArchiveSafeHandle hMpq);
 public static extern int SFileVerifyRawData(MpqArchiveSafeHandle hMpq, uint dwWhatToVerify, [MarshalAs(UnmanagedType.LPStr)] string szFileName);
 public static extern uint SFileVerifyFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName, uint dwFlags);
 public static extern bool SFileFlushArchive(MpqArchiveSafeHandle hMpq);
 public static extern bool SFileAddFileEx(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPTStr)] string szFileName, [MarshalAs(UnmanagedType.LPStr)] string szArchivedName, uint dwFlags, uint dwCompression, uint dwCompressionNext);
 public static extern bool SFileCloseArchive(MpqArchiveSafeHandle hMpq);
 public static extern bool SFileAddWave(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPTStr)] string szFileName, [MarshalAs(UnmanagedType.LPStr)] string szArchivedName, uint dwFlags, uint dwQuality);
 public static extern bool SFileSetCompactCallback(MpqArchiveSafeHandle hMpq, SFILE_COMPACT_CALLBACK compactCB, IntPtr pvUserData);
 public static extern bool SFileRemoveFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName, uint dwSearchScope);
 public static extern uint SFileGetMaxFileCount(MpqArchiveSafeHandle hMpq);
 public static extern bool SFileCreateArchive2([MarshalAs(UnmanagedType.LPTStr)] string szMpqName, ref SFILE_CREATE_MPQ pCreateInfo, out MpqArchiveSafeHandle phMpq);
 public static extern uint SFileGetAttributes(MpqArchiveSafeHandle hMpq);
 public static extern bool SFileRenameFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szOldFileName, [MarshalAs(UnmanagedType.LPStr)] string szNewFileName);
 public static extern bool SFileUpdateFileAttributes(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName);
 public static extern bool SFileSetAddFileCallback(MpqArchiveSafeHandle hMpq, SFILE_ADDFILE_CALLBACK AddFileCB, IntPtr pvUserData);
 public static extern bool SFileIsPatchedArchive(MpqArchiveSafeHandle hMpq);
 public static extern bool SFileSetDownloadCallback(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.FunctionPtr)] SFILE_DOWNLOAD_CALLBACK pfnCallback, IntPtr pvUserData);
 public static extern bool SFileOpenFileEx(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName, uint dwSearchScope, out MpqFileSafeHandle phFile);
 public static extern bool SFileGetFileChecksums(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName, out uint pdwCrc32, IntPtr pMD5);