2010-10-25 3 views
2

J'ai utilisé la fonction WinAPI pour créer un fichier OLE en C#. La fonction est WinAPI:C#: Longueur maximale du nom de fichier pour le fichier 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); 

J'ai utilisé cette fonction dans l'application C# comme ci-dessous:

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

La fonction fonctionne parfaitement. Mais lorsque la longueur du nom de fichier du fichier est 140, il n'a pas réussi à créer le fichier OLE. La valeur de retour de hResult est -2147467259.

La valeur de sourceFileFullPath = "C: \ Users \ Administrateur \ AppData \ Local \ Temp \ TmpTzStore1 \ pju3wswj.jmq \ 000008F6 \ CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx"

La longueur du nom de fichier (CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx) est 140.

Mais quand j'ai coupé le nom de fichier à 120, cela a fonctionné.

Je voulais savoir s'il y avait une limitation dans la longueur du nom de fichier OLE. Depuis que je l'ai essayé pour différents fichiers d'application (doc, docx, txt, pdf ...). Les résultats varient pour différents fichiers.

Je ne sais pas quelle est la longueur exacte du nom de fichier que cette API prend en charge. Ou cela dépend de l'OS? J'utilise Windows Server 2008.

Merci Prakash

+0

http://stackoverflow.com/questions/265769/maximum-filename-length-in-ntfs-xp-and-vista – Aliostad

Répondre

0

La longueur du nom de fichier maximum de la longueur du nom de fichier complet , y compris le chemin, est (about) 259 caractères. La longueur du chemin que vous avez collé est de 216 caractères, donc cela devrait être sous la limite.

Que les MSDNpages ne décrivent pas une longueur maximale spécifique implique que 259 caractères devraient être le maximum.

Je n'ai trouvé aucune documentation sur cet écart. Peut-être qu'un ou plusieurs de vos chemins sont des liens symboliques vers des noms de chemins qui sont en réalité plus longs.

+0

Une chose étonnante s'est produite. Lorsque j'ai utilisé le nom de fichier qui n'a que des caractères alphabétiques mais ayant la longueur 140, cela a fonctionné. – Prakash

+0

Vous plaisantez! Tu veux dire seulement A à Z? –

+0

Oui. Je n'ai utilisé que A, B et C. Son nom de fichier est ABCABCABCABCABABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC.xlsx – Prakash

Questions connexes