http://msdn.microsoft.com/en-us/library/windows/desktop/aa380536(v=VS.85).aspxのコードを使用しようとしています
AcquireCredentialsHandleの行は、2番目の引数がPSECURITY_STRINGと互換性がないことを示しています。私がここで何ができるか誰か知っていますか?
http://msdn.microsoft.com/en-us/library/windows/desktop/aa380536(v=VS.85).aspxのコードを使用しようとしています
AcquireCredentialsHandleの行は、2番目の引数がPSECURITY_STRINGと互換性がないことを示しています。私がここで何ができるか誰か知っていますか?
文字列パラメーターを持つほとんどの Win32 API 関数と同様に、が定義されているかどうかに応じてまたはにAcquireCredentialsHandle()
マップされるため、それぞれ期待されるまたはポインターになります。一方、Aは構造体をモデルにした構造体で、どちらも UTF-16 でエンコードされた Unicode データのみを含みます。AcquireCredentialsHandleA()
AcquireCredentialsHandleW()
UNICODE
char*
wchar_t*
SECURITY_STRING
UNICODE_STRING
SECURITY_STRING
に値を渡すには、まずメンバーの内容を AnsiAcquireCredentialsHandleA()
に変換する必要があります。SECURITY_STRING::Buffer
PSECURITY_STRING str;
...
int len = WideCharToMultiByte(0, 0, (LPWSTR)str->Buffer, str->Length, NULL, 0, NULL, NULL);
std::string tmp(len);
WideCharToMultiByte(0, 0, (LPWSTR)str->Buffer, str->Length, &tmp[0], len, NULL, NULL);
AcquireCredentialsHandle(..., tmp.c_str(), ...);
SECURITY_STRING
に値を渡すには、メンバーをそのままAcquireCredentialsHandleW()
渡す必要があります。SECURITY_STRING::Buffer
PSECURITY_STRING str;
...
AcquireCredentialsHandle(..., (LPWSTR)str->Buffer, ...);
いずれにせよ、それ自体へのポインタを渡しませんSECURITY_STRING
。