Как маршалировать возвращаемые значения функций WinApi?
Просто: Как я могуявно маршал результат функции WinAPi?
Я знаю, как упорядочить параметры функций WinApi в C #, но как я могу также упорядочить возвращаемые значения? Или я действительно должен их маршалировать? Я понимаю, что WinAPi возвращает толькоBOOL
или все типыINT
(дескрипторы int также в неуправляемом коде).// common signature
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi)]
static extern int GetFileAttributes([MarshalAs(UnmanagedType.LPStr)] string filename);
// my prefered signature because easy to handle the result
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi)]
static extern FileAttributes GetFileAttributes([MarshalAs(UnmanagedType.LPStr)] string filename);
посколькуFileAttributes
является enum, и каждое значение может быть легко приведено к I 'int
я уверен, что яЯ в безопасности с этим обозначением. Но могу ли я маршалировать результат в этой сигнатуре, как я делаю с параметрами? Я на самом деле знаю толькоMarshal
класс иMarshalAs
приписывать.