나는 이런 [dual]
IDispatch
를 구현하는 인터페이스, 뭔가를 :COM : 문자열 또는 실제 값의 복사본을 반환 하시겠습니까?
[dual, ...]
interface IMyInterface : IDispatch
{
[id(1), propget] HRESULT StringValue([out, string, retval] OLECHAR const ** str);
};
IMyInterface
에 대한 나의 지원 객체는 멤버 변수, d_str
있습니다
class CBackingObject : public IMyInterface
{
std::basic_string<OLECHAR> d_str;
...
};
StringValue
속성을 반환에 대한 COM 규칙은 무엇을? d_str.data()
또는 사본을 보내 주시겠습니까? 클라이언트는 문자열 값 속성에 의해 반환 된 문자열을 자동으로 해제해야합니까?
감사합니다 한스 - 훌륭한 답변과 그에 따라 계약을 따를 것입니다. 3 가지 질문 : (1) SysAllocString()의 * 사본 *을 반환해야합니다. (2) 만일 내가 상응하는'propput'을 가지고 있다면, 들어오는 BSTR도 역시 복사해야합니까? (3) 계약서를 설명하는 의사에게 나를 연결할 수 있습니까? – 0xbe5077ed
SysAllocString이 이미 복사본을 만듭니다. setter는 포인터가 아닌 문자열 내용을 복사해야합니다. 링크에 google을 사용하고 도서에는 amazon을 사용하십시오. –