我使用WinAPI函數在C#中創建OLE文件。該WinAPI的功能是:C#:OLE文件的最大文件名長度
[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。
的 值sourceFileFullPath = 「C:\用戶\管理員\應用程序數據\本地\ TEMP \ TmpTzStore1 \ pju3wswj.jmq \ 000008F6 \ CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx」
文件名的長度(CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx)是140.
但是,當我將文件名修剪爲120時,它工作。
我想知道OLE文件的文件名長度是否有限制。 因爲我嘗試了不同的應用程序文件(doc,docx,txt,pdf ...)。結果因不同文件而異。
我不知道這個API支持的文件名的長度是多少。或者它依賴於操作系統?我使用Windows Server 2008的
感謝 普拉卡什
http://stackoverflow.com/questions/265769/maximum-filename-length-in-ntfs-xp-and-vista – Aliostad 2010-10-25 12:10:27