aboutsummaryrefslogtreecommitdiff
path: root/src/tools/extractor_common
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/extractor_common')
-rw-r--r--src/tools/extractor_common/CascHandles.cpp10
-rw-r--r--src/tools/extractor_common/CascHandles.h2
2 files changed, 9 insertions, 3 deletions
diff --git a/src/tools/extractor_common/CascHandles.cpp b/src/tools/extractor_common/CascHandles.cpp
index baed5e61b7a..cfce1c22999 100644
--- a/src/tools/extractor_common/CascHandles.cpp
+++ b/src/tools/extractor_common/CascHandles.cpp
@@ -55,10 +55,16 @@ void CASC::FileDeleter::operator()(HANDLE handle)
::CascCloseFile(handle);
}
-CASC::StorageHandle CASC::OpenStorage(boost::filesystem::path const& path, DWORD localeMask)
+CASC::StorageHandle CASC::OpenStorage(boost::filesystem::path const& path, DWORD localeMask, char const* product)
{
+ std::string strPath = path.string();
+ CASC_OPEN_STORAGE_ARGS args = {};
+ args.Size = sizeof(CASC_OPEN_STORAGE_ARGS);
+ args.szLocalPath = strPath.c_str();
+ args.szCodeName = product;
+ args.dwLocaleMask = localeMask;
HANDLE handle = nullptr;
- if (!::CascOpenStorage(path.string().c_str(), localeMask, &handle))
+ if (!::CascOpenStorageEx(nullptr, &args, false, &handle))
{
DWORD lastError = GetLastError(); // support checking error set by *Open* call, not the next *Close*
printf("Error opening casc storage '%s': %s\n", path.string().c_str(), HumanReadableCASCError(lastError));
diff --git a/src/tools/extractor_common/CascHandles.h b/src/tools/extractor_common/CascHandles.h
index 4f536ce9ecc..008f118c68d 100644
--- a/src/tools/extractor_common/CascHandles.h
+++ b/src/tools/extractor_common/CascHandles.h
@@ -48,7 +48,7 @@ namespace CASC
char const* HumanReadableCASCError(DWORD error);
- StorageHandle OpenStorage(boost::filesystem::path const& path, DWORD localeMask);
+ StorageHandle OpenStorage(boost::filesystem::path const& path, DWORD localeMask, char const* product);
DWORD GetBuildNumber(StorageHandle const& storage);
DWORD GetInstalledLocalesMask(StorageHandle const& storage);
bool HasTactKey(StorageHandle const& storage, ULONGLONG keyLookup);