GetUserNameEx()を呼び出すときに奇妙な戻りサイズに関する質問があります。たぶん誰かがこの問題に遭遇しているかもしれません。GetUserNameEx()が返すバッファのサイズ
私はGetUserNameEx()を2回呼び出します。最初に必要なバッファサイズを取得し、2番目に実際にバッファを設定します。で
documentationあなたはsizeパラメータについては、これを読むことができます:
-
lpNameBufferが小さすぎる場合、関数は失敗し、GetLastErrorがERROR_MORE_DATAを返します。このパラメータは、Unicode文字(Unicodeが使用されているかどうかにかかわらず)であるのバッファサイズを受信します。これには、終端ヌル文字も含めてが含まれます。
この値(
required_size
)を保存すると、正常に戻ったかどうかを確認できます。 -
入力時に、この変数は、lpNameBufferバッファのサイズをTCHARで指定します。関数が成功すると、変数はバッファにコピーされたTCHARの数を受け取ります。終端のヌル文字は含まれません。
これは
returned_size
です。
奇妙なことが、その後required_size
は22とreturned_size
は11
であり、私はプロジェクトのプロパティで文字エンコーディングを設定する場合に設定していないためにということであると私はその後、Unicode文字セットを使用するためのCharachterエンコーディングを設定するときrequired_size
は11であり、returned_size
も11です。
多分私は何かを得ることはできませんが、私はrequired_size
は変更しないと予想しました。誰もこれを見たことがありますか?
ありがとうございます。
UPD:ここではcode exampleです。
コードを投稿してください。問題を見るのが簡単でしょうか。 – Dennis
コードにリンクされたポストを更新しました。 – kishkin