public static extern int SFileVerifyRawData(MpqArchiveSafeHandle hMpq, uint dwWhatToVerify, [MarshalAs(UnmanagedType.LPStr)] string szFileName);
 public static extern bool SFileOpenPatchArchive(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPTStr)] string szPatchMpqName, [MarshalAs(UnmanagedType.LPStr)] string szPatchPathPrefix, OpenArchiveFlags 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 bool SFileCreateFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szArchiveName, ulong fileTime, uint dwFileSize, uint lcLocale, uint dwFlags, out MpqFileSafeHandle phFile);
 public static bool SFileCreateFile(MpqArchiveSafeHandle hMpq, string szArchiveName, _TFileEntry entry, out MpqFileSafeHandle phFile)
 {
     return(SFileCreateFile(hMpq, szArchiveName, entry.FileTime, entry.dwFileSize, entry.lcLocale, entry.dwFlags, out phFile));
 }
 public static extern int SFileEnumLocales(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName, IntPtr plcLocales, ref uint pdwMaxLocales, uint dwSearchScope);
 public static extern bool SFileCreateArchive([MarshalAs(UnmanagedType.LPTStr)] string szMpqName, uint dwCreateFlags, uint dwMaxFileCount, out MpqArchiveSafeHandle phMpq);
 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 SFileOpenArchive([MarshalAs(UnmanagedType.LPTStr)] string szMpqName, uint dwPriority, OpenArchiveFlags dwFlags, out MpqArchiveSafeHandle phMpq);
 public static extern uint SFileVerifyArchive(MpqArchiveSafeHandle hMpq);
 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 SFileRenameFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szOldFileName, [MarshalAs(UnmanagedType.LPStr)] string szNewFileName);
 public static extern uint SFileGetAttributes(MpqArchiveSafeHandle hMpq);
 public static extern bool SFileCreateArchive2([MarshalAs(UnmanagedType.LPTStr)] string szMpqName, ref SFILE_CREATE_MPQ pCreateInfo, out MpqArchiveSafeHandle phMpq);
 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 uint SFileVerifyFile(MpqArchiveSafeHandle hMpq, [MarshalAs(UnmanagedType.LPStr)] string szFileName, uint dwFlags);