[Bug 38756] FutureMark SystemInformation diagnostics (.NET 4.0 app) crashes when clicking 'connect' (COM support for 'new' moniker and ' BIND_OPTS3' missing)
wine-bugs at winehq.org
wine-bugs at winehq.org
Mon Mar 18 09:03:36 CDT 2019
https://bugs.winehq.org/show_bug.cgi?id=38756
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
URL|http://www.gamershell.com/n |https://web.archive.org/web
|ews_116756.html |/20190318134120/http://ftp.
| |airnet.ne.jp/pub/pc/forest/
| |p/pcmark/10493/PCMark_7_v10
| |4_installer.zip
Component|-unknown |ole32
--- Comment #1 from Anastasius Focht <focht at gmx.net> ---
Hello folks,
revisiting, still present.
Adding stable link to snapshot via Internet archive.
https://web.archive.org/web/20190318134120/http://ftp.airnet.ne.jp/pub/pc/forest/p/pcmark/10493/PCMark_7_v104_installer.zip
--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Futuremark/Futuremark SystemInfo
$ WINEDEBUG=+seh,+relay,+ole,+variant wine ./FMSIDiag.exe >>log.txt 2>&1
...
004b:Call ole32.CoGetObject(01050ff8
L"new:{f9c82199-b002-41b4-8b00-0f1eca89425f}",05b2e31c,05b2e398,05b2e314)
ret=05052408
004b:trace:ole:CreateBindCtx (0,0x5b2e244)
004b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000034) ret=7e24277c
004b:Ret ntdll.RtlAllocateHeap() retval=0588a8e8 ret=7e24277c
004b:trace:ole:BindCtxImpl_Construct (0x588a8e8)
004b:Call KERNEL32.GetThreadLocale() ret=7e242670
004b:Ret KERNEL32.GetThreadLocale() retval=00000409 ret=7e242670
004b:trace:ole:BindCtxImpl_QueryInterface (0x588a8e8
{0000000e-0000-0000-c000-000000000046} 0x5b2e244)
004b:trace:ole:BindCtxImpl_AddRef (0x588a8e8)
004b:trace:ole:BindCtxImpl_SetBindOptions (0x588a8e8,0x5b2e31c)
004b:warn:ole:BindCtxImpl_SetBindOptions invalid size
004b:trace:ole:BindCtxImpl_Release (0x588a8e8)
004b:trace:ole:BindCtxImpl_ReleaseBoundObjects (0x588a8e8)
004b:trace:ole:BindCtxImpl_Destroy (0x588a8e8)
004b:Call ntdll.RtlFreeHeap(00110000,00000000,00000000) ret=7e2416ad
004b:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7e2416ad
004b:Call ntdll.RtlFreeHeap(00110000,00000000,0588a8e8) ret=7e2416cd
004b:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7e2416cd
004b:Ret ole32.CoGetObject() retval=80070057 ret=05052408
...
--- snip ---
Also interesting (Delphi based test app source snippet):
http://elists.org/pipermail/delphi/2006-May/028508.html
--- quote ---
Hello,
I wonder whether anybody already managed to run an elevated instance
of a COM object as mentioned in msdn article below, paragraph
"Shield Implementation and APIs"?
http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/AccProtVista.asp
CoCreateInstanceAsAdmin() is described here:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/1595ebb8-65af-4609-b3e7-a21209e64391.asp
I get it working only when I'm logged in as Admin and the 'consent prompt'
pops up. As a limited User the Elevation UI (login prompt) is displayed,
login succeeds, however my method ShowMessage() isn't shown/executed, why??
Since I'm not familar with COM I may miss something simple, any help is
appreciated.
Arno Garrels
///////////////////////////////////////
uses
Windows, Sysutils, ActiveX;
type
PBindOpts3 = ^TBindOpts3;
{$EXTERNALSYM tagBIND_OPTS3}
tagBIND_OPTS3 = record
cbStruct: DWORD;
grfFlags: DWORD;
grfMode: DWORD;
dwTickCountDeadline: DWORD;
dwTrackFlags: DWORD;
dwClassContext: DWORD;
locale: LCID;
pServerInfo: Pointer; //DUMMY!! //COSERVERINFO * ;
hwnd: HWND;
end;
TBindOpts3 = tagBIND_OPTS3;
{$EXTERNALSYM BIND_OPTS3}
BIND_OPTS3 = TBindOpts3;
function CoCreateInstanceAsAdmin(WndHandle: HWND; clsid: TCLSID;
iid: TIID; out ppv): HRESULT;
implementation
function NewCoGetObject(pazName: PWideChar; pBindOptions: PBindOpts3;
const iid: TIID; out ppv): HResult; stdcall; external 'ole32.dll'
name 'CoGetObject';
function CoCreateInstanceAsAdmin(WndHandle: HWND; clsid: TCLSID;
iid: TIID; out ppv): HRESULT;
var
Bo : TBindOpts3;
Moniker : PWideChar;
begin
Moniker := PWideChar(WideString('Elevation:Administrator!new:' +
GuidToString(clsid)));
FillChar(Bo, SizeOf(Bo), #0);
Bo.hwnd := WndHandle;
Bo.cbStruct := SizeOf(Bo);
Bo.dwClassContext := CLSCTX_LOCAL_SERVER;
Result := NewCoGetObject(Moniker, @Bo, iid, ppv);
end;
////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
MyComObj : IDisplaySomething;
begin
OleCheck(CoCreateInstanceAsAdmin(Self.Handle,
Class_DisplaySomething,
IDisplaySomething,
MyComObj));
MyComObj.Display('OK!');
end;
--- quote ---
$ sha1sum PCMark_7_v104_installer.zip
d3620c2b336dbffa5a93c381fe03f252a874416a6 PCMark_7_v104_installer.zip
$ du -sh PCMark_7_v104_installer.zip
304M PCMark_7_v104_installer.zip
$ wine --version
wine-4.4
Regards
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list