C #: максимальная длина имени файла для файла OLE - PullRequest
2 голосов
/ 25 октября 2010

Я использовал функцию WinAPI для создания OLE-файла в C #.Функция WinAPI:

   [DllImport("ole32.dll")]
    public static extern int OleCreateFromFile(
        [In] ref Guid rclsid,
        [MarshalAs(UnmanagedType.LPWStr)] string lpszFileName,
        [In] ref Guid riid, uint renderopt,
        [In] IntPtr pFormatEtc,
        IOleClientSite pClientSite,
        IStorage pStg,
        [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);

Я использовал эту функцию в приложении C #, как показано ниже:

     hResult = OleAPI.OleCreateFromFile(ref clsid,
                                            sourceFileFullPath,
                                            ref IID_IOleObject,
                                            (uint)OLERENDER.OLERENDER_DRAW,
                                            IntPtr.Zero,
                                            pOleClientSite,
                                            pStorage,
                                            out pOleObjectOut);

Функция работает отлично.Но когда длина имени файла файла составляет 140, он не смог создать файл OLE.Возвращаемое значение HRESULT является -2147467259

1008 * Значение sourceFileFullPath =. "C: \ Users \ Administrator \ AppData \ Local \ Temp \ TmpTzStore1 \ pju3wswj.jmq \ 000008F6 \ CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx" 1010 * Длина имени файла (CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsfdfkffffdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx) составляет 140.длина имени файла для файла OLE.Так как я попробовал это для разных файлов приложений (doc, docx, txt, pdf ...).Результаты варьировались для разных файлов.

Я не знаю, какова точная длина имени файла, поддерживаемая этим API.Или это зависит от ОС?Я использую Windows Server 2008.

Спасибо Prakash

1 Ответ

0 голосов
/ 25 октября 2010

Максимальная длина имени файла для complete длины имени файла, включая путь, составляет ( около ) 259 символов. Длина пути, который вы вставили, составляет 216 символов, поэтому он должен быть меньше лимита.

То, что MSDN страниц не описывает конкретную максимальную длину, подразумевает, что максимум 259 символов.

Я не смог найти никакой документации по этому несоответствию. Возможно, один или несколько ваших путей являются программными ссылками на имена путей, которые в действительности длиннее.

...