Hello all,
I'm a Windows software developer and I'm trying to execute an application under the wine environment.
Now I have a problem introduced with wine 0.9.49.
I use the function RegOverridePredefKey from the advapi32.dll.
To be compatible with older windows versions, I use the following code:
LONG WINAPI (*RegOverridePredefKey)(HKEY hKey, HKEY hNewHKey);
HMODULE hMod=GetModuleHandle("Advapi32");
if (hMod)
(FARPROC)RegOverridePredefKey=GetProcAddress(hMod,"RegOverridePredefKey");
if (RegOverridePredefKey)
RegOverridePredefKey(HKEY_CLASSES_ROOT, hKey);
In wine 0.9.49 a stub entry for this function was created, but the implementation is missing.
The result is, that the GetProcAddress function is successful, but the RegOverridePredefKey call fails.
I can catch the EXCEPTION_WINE_STUB exception (see code below), but the application will nevertheless closed.
if (RegOverridePredefKey)
{
long err = ERROR_CALL_NOT_IMPLEMENTED;
try
{ // test for C-based structured exceptions
err=RegOverridePredefKey(HKEY_CLASSES_ROOT, hKey);
}
#define EXCEPTION_WINE_STUB 0x80000100
__except(GetExceptionCode()==EXCEPTION_WINE_STUB ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
RegOverridePredefKey=NULL;
}
}
What can I do ?
I know, that I can find a workaround for this case, but this in not my problem. How can I handle, in principle, such exceptions?
What is the reason for creating a function stub without an implementation ???
Thanks
Nessi