> 백엔드 개발 > Golang > GetFileVersionInfoSize로 초기화된 핸들을 사용하여 GetFileInformationByHandle을 호출할 때 '잘못된 핸들' 오류 발생

GetFileVersionInfoSize로 초기화된 핸들을 사용하여 GetFileInformationByHandle을 호출할 때 '잘못된 핸들' 오류 발생

WBOY
풀어 주다: 2024-02-09 10:24:20
앞으로
1116명이 탐색했습니다.

使用使用 GetFileVersionInfoSize 初始化的句柄调用 GetFileInformationByHandle 时出现“句柄无效”错误

php 편집기 Yuzai는 GetFileVersionInfoSize로 초기화된 핸들을 사용하여 GetFileInformationByHandle을 호출할 때 "잘못된 핸들" 오류가 발생했습니다. 이 오류는 일반적으로 핸들이 파일 정보를 올바르게 식별하지 못하기 때문에 발생합니다. 이 문제를 해결하는 방법에는 핸들이 올바르게 초기화되었는지 확인하는 방법, 파일 경로가 올바른지 확인하는 방법, 해당 파일이 이미 다른 프로세스에서 사용되고 있는지 확인하는 방법 등 여러 가지가 있습니다. 주의 깊은 조사와 처리를 통해 이 문제를 해결할 수 있으며 파일 정보를 원활하게 얻을 수 있습니다.

질문 내용

Go on Windows를 사용하여 프로그래밍 방식으로 파일 생성 시간을 포함한 파일 정보를 얻으려고 합니다.

내가 golang.org/x/sys/windows 中发现一个函数,它返回有关何时创建文件的信息,该函数是 getfileinformationbyhandle (go 文档、windows api 文档)。但是,我使用此函数编写的代码给了我一个 the handle is invalid 틀렸어.

내 코드는 다음과 같습니다.

으아악

실행하면 다음과 같은 결과가 나옵니다.

으아악

파일 경로가 유효한지 확인했습니다(또한 os.stat 호출은 오류를 반환하지 않습니다):

system32 디렉토리가 32비트 Windows 프로그램에 표시되지 않는다는 것을 알고 있지만 git-bash의 file 도구를 사용하여 내 실행 파일이 64비트 프로그램이라는 것을 확인했습니다.

으아악

경로가 유효해야 하는데 제가 뭔가 잘못해서 잘못된 핸들을 얻게 되는 것은 아닐까요?

해결 방법

이 답변을 바탕으로 생성 시간을 얻는 다른 방법을 찾았습니다.

으아악

출력:

으아악

이 출력은 파일 속성 보기의 생성 시간과 일치합니다.

filetimefiletime本身的时间自 1601 年 1 月 1 日 utc 起,time.unixnanoseconds 자체는 1601년 1월 1일 UTC부터 시작하지만 time.unix나노초 함수

는 1970년 1월 1일 UTC 이후의 시간을 기준으로 합니다. 🎜

위 내용은 GetFileVersionInfoSize로 초기화된 핸들을 사용하여 GetFileInformationByHandle을 호출할 때 '잘못된 핸들' 오류 발생의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿