Access Violations Marshalling DocFile Pointers When Logged in with Terminal Services (300229)
The information in this article applies to:
- Microsoft Windows 2000 Server
- Microsoft Windows 2000 Advanced Server
- Microsoft Windows 2000 Professional
This article was previously published under Q300229 SYMPTOMS
When you are logged on to a Terminal Services session and running a client that accesses a server that is implemented as a service on the same computer, access violations or unexpected behavior may occur when IStorage or IStream pointers are passed between the client and the server. The access violation could have the following call stack on Windows 2000-based computers:
ChildEBP RetAddr Args to Child
0012f54c 77aec10b 00e73e78 77a69466 0012f590 ole32!CPubStream__GetTransactedDepth+0x18 (FPO: [0,0,0])
0012f554 77a69466 0012f590 0012f5a0 004a5208 ole32!CExposedStream__ValidateWriteAccess+0x23 (FPO: [0,0,1])
0012f588 00401fd2 00000000 0012f610 00000064 ole32!CExposedStream__Write+0x98 (FPO: [Non-Fpo])
RESOLUTION
A fix has been implemented in Microsoft Windows XP.
WORKAROUND
To work around this issue, developers can write their programs and services to use standard marshaling by implementing custom lockbytes. Implement this with the StgCreateDocfileOnILockBytes function.
STATUSMicrosoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.
If you require a fix for Windows 2000, please contact Microsoft Product Support Services.
Modification Type: | Major | Last Reviewed: | 11/20/2003 |
---|
Keywords: | kberrmsg kbnofix kbprb KB300229 |
---|
|