12

Dokanを使用してPOSIXファイルシステムとWindowsの間にレイヤーを作成しており、 errnoの種類(、など)のエラー値を、呼び出し時に受け取る同等のWin32 (など)に変換する必要があります。EINVALENOENTGetLastError()ERROR_INVALID_PARAMETER

これらの変換を実行するために使用できる既存の関数、ライブラリ、または参照はありますか?

私は通常、これらの問題についてインスピレーションを得るためにPythonソースを調べますが、Pythonはこの必要性をきちんと回避します(少なくとも私が知る限り)。

例として、EINVAL (22)に変換しERROR_INVALID_PARAMETER (87)ます。

4

2 に答える 2

12

私は過去にこのテーマについて、主に Microsoft DOSMAP.CPPユニットに基づいた実験を行いました。ただし、エラー マッピングが特定のエラー コードに対して常に正しいとは限らなかったため、その時点でプロジェクトをキャンセルしました。たとえば、すべての POSIX バージョンが を返すわけではなく、代わりに返さEINVALれるERROR_INVALID_ACCESSものもありますEACCES。また、POSIX.1-2008とDOSMAP.CPPmingw.cPostgresql error.ctclWinError.c、MySQLなどのerrno.h システム エラー番号を比較しました。場合によっては、特定のエラー コードのマッピング ルールが異なることがあります。個人的には、それらの間で一貫したエラー コード マッピングのみを処理することをお勧めします。my_winerr.c

于 2010-10-17T10:34:12.960 に答える
7

それぞれについてerrno、一般的に多くの可能なGetLastError値があるので、あなたが考えていることは必ずしも実行可能ではないかもしれません。

とにかく、私は「errno to getlasterror」をグーグルで検索したところ、最初のグーグルヒットでCygwinソースからこの通信リストが提供されました。

それは間違った方法GetLastErrorですerrnoが、おそらく役に立ちますか?

乾杯&hth。

于 2010-10-17T07:20:01.060 に答える