Hello, I'm developing db-based document management system. Currently I'm trying to implement adding documents to the system through drag and drop from Windows Explorer. This is quite lengthy operation involving some user input in wizard that appears. So I decided to use IAsyncOperation explosed by explorer's IDataObject. The following problems occured (Win2K SP3): 1. IAsyncOperation->GetAsyncMode() returns TRUE but not VARIANT_TRUE as noted in MSDN 2. When I'm even not using asynchronous drag and drop some file managers do not remove files if I set pdwEffect to DROPEFFECT_MOVE and set CFSTR_PERFORMEDDROPEFFECT format to the same value. Explorer deletes files but, for example, Windows Commander doesn't 3. In asynchronous drag and drop mode I set CFSTR_PERFORMEDDROPEFFECT format to DROPEFFECT_MOVE and call IAsyncOperation::EndOperation(S_OK, NULL, DROPEFFECT_MOVE). Everything works fine but Windows Explorer doesn't delete files :( Adding files is made in the new spawned thread (from IDataObject::Drop method) as well as CFSTR_PERFORMEDDROPEFFECT and EndOperation. IDataObject interface pointer is marshalled through CoMarshalInterThreadInterfaceInStream/CoGetInterfaceAndReleaseStream. No AddRef/Release is performed (is this correct?). IAsyncOperation::BeginOperation is called before spawning the thread Any help is highly desired.