php Xiaobian Yuzai は、GetFileVersionInfoSize によって初期化されたハンドルを使用して GetFileInformationByHandle を呼び出したときに、「無効なハンドル」エラーが発生しました。このエラーは通常、ハンドルがファイル情報を正しく識別していないことが原因で発生します。この問題を解決するには、ハンドルが正しく初期化されているかどうかを確認する、ファイル パスが正しいことを確認する、ファイルがすでに別のプロセスによって占有されているかどうかを確認するなど、いくつかの方法があります。注意深く調査して処理することにより、この問題は解決され、ファイル情報をスムーズに取得できるようになります。
Windowsのgoを使用して、ファイルの作成時刻を含むファイル情報をプログラムで取得しようとしています。
golang.org/x/sys/windows で、ファイルが作成されたときの情報を返す関数を見つけました。関数は
getfileinformationbyhandle (go ドキュメント、Windows API ドキュメント) )。ただし、この関数を使用して作成したコードでは、
ハンドルが無効です エラーが発生しました。
リーリー
これを実行すると、次の出力が得られます:リーリー
ファイル パスが有効であることを確認しました (さらに、os.stat 呼び出しではエラーが返されません):
file ツールを使用して、実行可能ファイルが 64 ビット プログラムであることを確認しました。
リーリー
パスは有効であるはずなので、無効なハンドルを取得するような間違った操作を行っている可能性がありますか?
解決策
この回答に基づいて、作成時間を取得する別の方法を見つけました: リーリー 出力:
リーリーこの出力は、ファイル プロパティ ビューの作成時間と一致します。
filetime 自体は 1601 年 1 月 1 日 UTC のものですが、
time.unix および
nano秒 機能 1970 年 1 月 1 日 (UTC) からの時間に基づきます。
以上がGetFileVersionInfoSize で初期化されたハンドルを使用して GetFileInformationByHandle を呼び出すと、「無効なハンドル」エラーが発生するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。