Привет.
Коротко о главном:
Есть структура WIN32_FIND_DATA:
http://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365740(v=vs.85).aspx
Она содержит в себе FILETIME:
http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms724284(v=vs.85).aspx
При реализации в C#, если использовать FILETIME, все нормально.
Если использовать long, отхватываются два лишних символа от имени.
В обоих случаях свойство Pack не установлено. CharSet = Unicode. Система x64.
Я бы предположил, что это проблема с выравниванием, и dwFileAttributes расширеяется до 8 байт, мы теряем 4 байта, что в пересчете на символы и дает -2 в имени файла.
Но почему это происходит при использовании long, но не происходит при использовании FILETIME? (
http://msdn.microsoft.com/ru-ru/library/system.runtime.interopservices.comtypes.filetime(v=vs.110).aspx)
Спасибо за внимание.
Тот самый Джон Скит сталкивался с похожей
проблемой.
Здравствуйте, LWhisper, Вы писали:
LW>Привет.
LW>Коротко о главном:
LW>Есть структура WIN32_FIND_DATA: http://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365740(v=vs.85).aspx
LW>Она содержит в себе FILETIME: http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms724284(v=vs.85).aspx
LW>При реализации в C#, если использовать FILETIME, все нормально.
LW>Если использовать long, отхватываются два лишних символа от имени.
LW>В обоих случаях свойство Pack не установлено. CharSet = Unicode. Система x64.
LW>Я бы предположил, что это проблема с выравниванием, и dwFileAttributes расширеяется до 8 байт, мы теряем 4 байта, что в пересчете на символы и дает -2 в имени файла.
LW>Но почему это происходит при использовании long, но не происходит при использовании FILETIME? (http://msdn.microsoft.com/ru-ru/library/system.runtime.interopservices.comtypes.filetime(v=vs.110).aspx)
LW>Спасибо за внимание.
Здесь