GUIDクラス変数をUuidToString関数を用いて、RPC_WSTR型に文字列変換を行い、LPCWSTR型変数に代入を試みようとしています。
文字列変換後にはRPC_WSTR型変数をRpcStringFree関数で解放しているのですが、LPCWSTR型変数にも影響を受けてしまいます。
RPC_WSTR型⇒LPCWSTR型でアドレス渡しをしているからと解釈しているのですが、この場合に値渡しをどのようにすればよろしいのかが分かりません。
ご教授の程、お願い致します。
C++
1#include <comdef.h> 2typedef struct _STSAMPLE 3{ 4 LPCWSTR strGuid 5}STSAMPLE,*LPSTSAMPLE; 6 7HRESULT GuidToStr(GUID id, LPSTSAMPLE stSample) 8{ 9 RPC_WSTR guidStr; 10 ::UuidToString((UUID*)&id, &guidStr); 11 stSample->strGuid = (WCHAR*)guidStr; 12 RpcStringFree(&guidStr); 13 return S_OK; 14} 15 16int _tmain(int argc, _TCHAR* argv[]) 17{ 18 STSAMPLE st; 19 GUID id = {0x11223344, 0x5566, 0x7788, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x11}; 20 GuidToStr(id,&st); 21 return 0; 22}
RpcStringFree関数でブレイクをかけた時点では、stSample->strGuidには値が入っています。
RpcStringFree関数の次行でブレイクをかけた時点で、stSample->strGuidの値が変わります。
原因自体は「stSample->strGuid = (WCHAR*)guidStr;」であるとは思っているのですが、ではどう入れればよいのか、という部分で難航している状況になります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/17 08:34