|
|
Автор:
|
Федосов Михаил
|
|
Тема:
|
RE[4]: C# и SHGetFileInfo
|
|
Дата:
|
7/15/2004 6:34:00 PM
|
>Хотя поэкспериментировав еще, теперь мне кажется что проблема была в размере отводимом под szDisplayName. У меня под него отводилось 256, и тогда szTypeName пустой, если же его увеличить до 260 - szTypeName заполняется. Любопытно, что на заполнения самого szDisplayName это влияния не оказывает
А, точно! Тогда все понятно. Если посмотреть в MSDN, то там сказано, что szDisplayName имеет размер MAX_PATH, а константа MAX_PATH имеет размер 260. (если интересно, она описана в заголовочном файле С++ WinDef.h) При маршалинге под строку у тебя выделялось 256, и SHGetFileInfo просто начинал писать нули за пределы отведенного пространства, и как раз попадал на начало szTypeName. А все строки в системе заканчиваются нулем, поэтому при обратном преобразовании получалось так, что трока szTypeName как раз содержала эти нули в своем начале.
Как хорошо, что при програмировании под .NET таких глюков не происходит :-)
|
|