Freigeben über


MSPST and Session 0 Isolation don't mix

I had a case recently where a customer was using the Microsoft Personal Storage Provider (MSPST) in a service.  Everything was working fine until they moved to Windows Vista, the kernel objects MSPST uses (mutants, file mappings, etc) to allow two processes to synchronize access to the same physical .pst file were'nt working.  Why?  Because of Session 0 Isolation in Windows Vista.  When the service application was moved into its own Windows session it could not longer access those objects.  The result was that the MSPST created new objects in the local namespace for Session 0.  MSPST then continued processing assuming that it was responsible for intialization of those objects.  In the end MSPST tried to a delete a file Outlook was also using in Session 1, which caused a sharing violation.  MSPST not knowing how to handle this returned MAPI_E_DISK_ERROR.