ParseDisplayName failed for the path starting with two semicolons(;;)


  • I am trying to use IShellFolder to enumerate the child items of a integerated camera.  The full path of the camera folder in shell is as following:


    This path is got from previous GetDisplayNameOf call with SHGDN_FORPARSING flag on the camera item.  But when I pass the path back to ParseDisplayName, it always failed with error code 0x80070002:


     HRESULT hr=lpsf->ParseDisplayName(
    ParseDisplayName works correctly for other paths like "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}" (Control Panel). 

    I noticed that the address showed error has ";;" (two semicolons) prefix while others which can correctly be parsed are with "::" (two colons) prefix. 
    I tried to open";;{E211B736-43FD-11D1-9EFB-0000F8757FCD}\devid:{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0000:"  in Explorer. To my surprise, the camera can be correctly opened.

    MSDN document for ParseDisplayName only mentioned the "::{GUID}" syntax, but nothing of the ";;{GUID}" format.
    I think there must be some special things to deal with for addresses prefixed by ";;", but what they are?

    Tuesday, October 06, 2009 11:13 AM