FIX: Navigate(2) Causes Access Violation in Shdocvw.dll (182490)
The information in this article applies to:
- Microsoft Internet Explorer (Programming) 3.0
- Microsoft Internet Explorer (Programming) 3.01
- Microsoft Internet Explorer (Programming) 3.02
- Microsoft Internet Explorer (Programming) 4.0
- Microsoft Internet Explorer (Programming) 4.01
This article was previously published under Q182490 SYMPTOMS
Calling Navigate or Navigate2 causes an access violation in Shdocvw.dll.
The error that is reported is "(showdocvw.dll): 0xC0000005: Access
Violation".
CAUSE
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.
RESOLUTION
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);
STATUSMicrosoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This bug was corrected in Microsoft Internet Explorer 5. REFERENCES
Please see the "Reusing the WebBrowser" and "Reusing MSHTML" subsections of the "Internet Tools and Technologies" section in the Internet Client SDK online help:
Modification Type: | Minor | Last Reviewed: | 3/16/2005 |
---|
Keywords: | kbBug kberrmsg kbfix kbie500fix KB182490 |
---|
|