FIX: Navigate(2) Causes Access Violation in Shdocvw.dllID: Q182490
|
Calling Navigate or Navigate2 causes an access violation in Shdowvw.dll. The error that is reported is "(showdocvw.dll): 0xC0000005: Access Violation".
This is caused by passing NULLs to the Navigate or Navigate2 methods like this:
m_WebBrowser.Navigate2(pUrl, NULL, NULL, NULL, NULL);
Navigate(2) expects a pointers to VARIANTs. The access violation is due to
the fact that the WebBrowser control is trying to write to the memory
pointed to by one of these parameters. When you pass NULL for one or more
of these parameters, the WebBrowser control tries to write to the NULL
memory. This causes the access violation.
You must pass the address of empty VARIANTs to the Navigate or Navigate2
methods.
Typically, this can be accomplished with the following C++ code:
VARIANT vtEmpty;
vtEmpty.vt = VT_EMPTY;
However, using the compiler's native support for OLE is usually much
easier. Use the following code to take advantage of the compiler's native
support.
_variant_t vtEmpty;
// nothing further needed
If you are using MFC, the COleVariant class can be used to created an empty
VARIANT. The default constructor for COleVariant sets the type of the
VARIANT to VT_EMPTY. Here is the MFC code:
COleVariant vtEmpty;
Then, you pass the vtEmpty variable to the Navigate or Navigate2 method
like so:
m_WebBrowser.Navigate2(pUrl, &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty);
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Microsoft Internet Explorer 5.
Please see the "Reusing the WebBrowser" and "Reusing MSHTML" subsections of the "Internet Tools and Technologies" section in the Internet Client SDK online help:
http://msdn.microsoft.com/workshop/essentials/inetsdk/inetsdk_map.asp
Additional query words: 0xC0000005 shdocvw.dll
Keywords : kberrmsg kbIE300bug kbIE301bug kbIE400bug kbIE401bug kbIE302bug kbIE500fix
Version : WINDOWS:3.0,3.01,3.02,4.0,4.01
Platform : WINDOWS
Issue type : kbbug
Last Reviewed: April 8, 1999