Получить дескриптор FILE * для передачи в функцию C для System.IO.File и потоков по умолчанию - PullRequest
2 голосов
/ 23 марта 2011

Я использую старую библиотеку C (построенную как DLL) в моем приложении C #.Для одной из функций в этой библиотеке требуется передать FILE* (как определено в ANSI C).Можно ли как-нибудь получить дескриптор FILE * в C # для System.IO.File, stdout и stderr?

Или есть способ обойти эту проблему, любая идея, подсказка,и т.д ...?

Заранее спасибо.

1 Ответ

2 голосов
/ 23 марта 2011

Я не пробовал это, но это может сработать ...

System.IO.File.Create () / Open () вернет FileStream, оттуда вы можете использовать FileStream.SafeFileHandle иоттуда SafeFileHandle.DangerousGetHandle () предоставит вам собственную операционную систему HANDLE.

Затем в неуправляемом C _open_osfhandle () возьмет вашу HANDLE и вернет описатель int-файла.Передайте это _fdopen (), и он вернет ФАЙЛ *.

Длинный маршрут, с большим количеством возможностей для несовместимости и других ошибок.Но тебе может повезти!

...