PRB: Access Violation in VB Run-Time Using AddressOf (198607)
The information in this article applies to:
- Microsoft Visual Basic Learning Edition for Windows 6.0
- Microsoft Visual Basic Professional Edition for Windows 6.0
- Microsoft Visual Basic Enterprise Edition for Windows 6.0
This article was previously published under Q198607 SYMPTOMS
When running your Visual Basic application, you may encounter an error similar to the following:
The instruction at 0x660bd3b1 referenced memory at 0x0000009c. The
memory could not be written.
This error may occur immediately following a declared API function call within a Visual Basic callback function.
CAUSE
When the error occurs, the callback function is called by a thread that was not created by Visual Basic.
For instance, certain API calls such as CreateThread() and RegisterServiceCtrlHandler() create an additional thread before invoking the callback function that was previously setup by using the AddressOf operator. Although the same code may have worked in previous versions of Visual Basic, calling API's of this nature are currently unsupported in Visual Basic.
REFERENCES
For more information on using threads in Visual Basic, please see the following:
Visual Basic Books Online, "Apartment-Model Threading in Visual Basic"
Pattison, Ted, Programming Distributed Applications with COM and Microsoft Visual Basic 6.0. Microsoft Press, 1999, Chapter 7, "Exploring Apartments and Multithreading".
McKinney, Bruce, HardCore Visual Basic. Microsoft Press, 1997
Chapter 11, "Threads and Synchronization"
Appleman, Daniel, A Thread to Visual Basic article located at
the following Web URL:
For additional information, please see the following articles in the Microsoft Knowledge Base:
189133 Make C DLL More Accessible to VB with a Type Library
143258 How to Create Constants and DLL Declarations in a Type Library
Modification Type: | Minor | Last Reviewed: | 3/18/2005 |
---|
Keywords: | kbAPI kbprb kbThread KB198607 |
---|
|