GetUserNameEx()를 호출 할 때 이상한 반환 크기에 대한 질문이 있습니다. 어쩌면 누군가가 이미이 문제에 직면했을 것입니다.GetUserNameEx()가 반환하는 버퍼 크기
저는 GetUserNameEx()를 두 번 호출합니다. 첫 번째는 필요한 버퍼 크기를 얻고 두 번째는 실제로 버퍼를 채 웁니다. 에서
documentation size 매개 변수에 대해이 글을 읽을 수 있습니다
-
lpNameBuffer가 너무 작은 경우, 함수가 실패하고 GetLastError가 ERROR_MORE_DATA를 반환합니다. 이 매개 변수는 필수 버퍼 크기 인 (유니 코드 사용 여부와 상관없이) 유니 코드 문자 ()를 포함하며 종료 문자는 null입니다.
이 값 (
required_size
)을 저장하면 성공시 반환되는 값으로 저장됩니다. -
입력시이 변수는 TCHAR의 lpNameBuffer 버퍼 크기를 지정합니다. 함수가 성공하면 변수는 버퍼에 복사 된 TCHAR 수를 수신하며 종료 문자는 포함하지 않습니다.
이 사람은
returned_size
입니다.
이상한 것은 다음 required_size
는 22 returned_size
가 11
입니다, 내가 프로젝트 속성에서 문자 인코딩을 설정하면 설정 안 할 것입니다 그리고 난 다음, 유니 코드 문자 집합을 사용하는 Charachter 인코딩을 설정할 때 required_size
은 11이고 returned_size
도 11입니다.
어쩌면 나는 뭔가를 얻지 못할 수도 있지만, required_size
은 변경되지 않을 것으로 예상됩니다. 아무도 이것을 이미 보았습니까?
감사합니다.
UPD : 여기는 code example입니다.
코드를 게시하십시오. 문제를 더 쉽게 볼 수 있습니다. – Dennis
코드 링크가있는 게시물을 업데이트했습니다. – kishkin