Criando diretórios durante uma cópia usando o IFileOperation

Usando o wrapper IFileOperation de Stephen Toub para C # (ligação), que tem funcionado bem até agora. Agora estou tentando fazer uma cópia para coletar arquivos de locais de rede, cada local de rede em seu próprio subdiretório.

\\FOO\data para dentroC:\gather\Foo_data
\\BAR\manage\current para dentroC:\gather\bar\manage

E assim por diante. O problema está emFileOperation.CopyItem. Deve ser porque o diretório de destino ainda não existeIFileOperation irá criá-lo durante a cópia, certo? Eu usei a técnica deoutra pergunta e mudou de ToubFileOperation.CreateShellItem para isso:

private static ComReleaser<IShellItem> CreateShellItem( string path )
{
    try
    {
        return new ComReleaser<IShellItem>( (IShellItem)SHCreateItemFromParsingName( path, null, ref _shellItemGuid ) );
    }
    catch ( FileNotFoundException )
    {
        IntPtr pidl = SHSimpleIDListFromPath( path );
        IShellItem isi = (IShellItem)SHCreateItemFromIDList( pidl, ref _shellItemGuid );
        Marshal.FreeCoTaskMem( pidl );
        System.Diagnostics.Debug.WriteLine( "Shell item: " + isi.GetDisplayName( SIGDN.DesktopAbsoluteParsing ) );
        return new ComReleaser<IShellItem>( isi );
    }
}

Eu enfiei oDebug.WriteLine lá para verificar se está funcionando e parece estar funcionando bem; ele escreve o caminho de volta.

MasIFileOperation.CopyItem lança umArgumentExceptione não consigo descobrir o porquê. Eu não estou fazendo o "IShellItem para um arquivo inexistente "corretamente? Eu suspeito que eu preciso para obterSFGAO_FOLDER lá, desde que eu estou tentando criar umIShellItem para um inexistentediretório, não arquivo, mas como?

questionAnswers(1)

yourAnswerToTheQuestion