Microsoft MVP성태의 닷넷 이야기
.NET Framework: 34.3. 다시... 정봉겸님이 하신... 명확한 답변입니다. [링크 복사], [링크+제목 복사],
조회: 17540
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기

말씀하신 문제는 마샬링의 이해와는 상관없이 COM의 BSTR을 알아야 설명이 가능합니다.

결론부터 말씀드리면 OLECHAR* 와 BSTR은 다릅니다. 단지 호환성을 위해서 BSTR의 문자열부분을 OLECHAR*로 처리하는 것입니다. 그런 이유로 SysAllocString같은 함수를 사용하도록 강제하는 것입니다. 결과가 같다면 이를 사용할 필요가 없겠죠. 간단히 위의 예를 사용하겠습니다.

74 00 65 00 73 00 74 00 00 00 = test\0

이는 OLECHAR*이고 BSTR의 일부분이기 때문에 같게 보이는 부분입니다. 하지만, 사실은

08 00 00 00 74(*) 00 65 00 73 00 74 00 00 00 = ?\0test\0

DWORD크기로 스트링의 사이즈를 앞에 숨겨붙인 이것이 진짜 BSTR입니다. 문제는 이를 그대로 OLECHAR*로 처리하면 ?\0의 이상한 문자가 붙어서 문제가 되기 때문에 호환성을 위해서 포인터를 (*)에 두고 OLECHAR*로 취급을 하는 것입니다.

결국 매크로에는 BSTR을 OLECHAR*로 정의하였지만, BSTR이 OLECHAR*이라는 이야기는 아닙니다.

--

도움이 되셨기를..^^

bk








[최초 등록일: ]
[최종 수정일: 3/30/2005]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [196]  197  198 
NoWriterDateCnt.TitleFile(s)
73정성태11/14/200518506.NET Framework: 19. VS.NET 2005 Team Foundation Server 설치오류 - 26204 예외
72정성태12/26/200419954.NET Framework: 18. .NET Framework 2.0 Beta 설치 후에 Windows SharePoint Service 오류 [1]
136정성태3/31/200519937    답변글 .NET Framework: 18.1. Windows Sharepoint Services 를 설치한 이후 ASP.NET 오류 문제
71정성태12/26/200418099VS.NET IDE: 11. SQL Server 2005 Beta 2 를 네트워크 드라이브로부터 설치시 오류
70정성태12/26/200421025VS.NET IDE: 10. WSS 설치 후 localhost 접근 보안 오류
69정성태12/5/200418155VS.NET IDE: 9. 다른 컴퓨터(방화벽 설치)에 설치된 SQL Server에 통합 인증을 할 때 필요한 포트
68정성태10/31/200422993.NET Framework: 17. Win32_NTLogEvent를 c#에서 wmi 쿼리할 때..에러..
67정성태10/22/200420225COM 개체 관련: 12. Microsoft.XMLHTTP 개체에서 Microsoft.XMLDOM 개체를 전송할 때 charset 지정 문제?
66정성태10/16/200421405.NET Framework: 16. [닷넷 리모팅] 프록시가 죽은 것을 원격 개체가 알 수 있는 방법은?
65정성태10/16/200420391VS.NET IDE: 8. Windows 가상 메모리 사용 해제
64정성태10/3/200424102.NET Framework: 15. ASP.NET에서 .NET COM+ 개체 등록 시 "Local System"이어야 하는 이유.
63정성태10/3/200424169.NET Framework: 14. Response.Cookies.Clear는 기존 설정된 Cookie 헤더를 삭제하는 것이 아닙니다.
62정성태10/3/200423288기타: 7. DB 트랜잭션에서 Lock이 걸릴 수 있는 전형적인 예.
61정성태10/3/200422698.NET Framework: 13. Main 메서드에 붙은 STAThread 의미
60정성태10/3/200421493.NET Framework: 12. IDispatch::GetIDsOfNames 역변환 메서드 작성 힌트 ( DISPID 로 메서드 이름 알아내는 것 )
58정성태10/3/200424618.NET Framework: 11. HttpContext의 간략이해
56정성태10/3/200421024.NET Framework: 10. [.NET 리모팅] 원격개체를 호출한 클라이언트의 연결이 유효한지 판단하는 방법.
55정성태10/3/200421816COM 개체 관련: 11. 내가 생각해 보는 COM의 현재 위치
54정성태8/30/200427458VC++: 10. 내가 생각해 보는 MFC OCX와 ATL DLL에 선택 기준
53정성태11/20/200526761VC++: 9. CFtpFileFind/FtpFileFind가 일부 Unix FTP 서버에서 목록을 제대로 못 가져오는 문제
184정성태11/23/200520467    답변글 VC++: 9.1. FTP 관련 토픽파일 다운로드1
51정성태6/24/200425569VC++: 8. BSTR 메모리 할당 및 해제(MSDN Library 발췌) [1]
50정성태6/16/200418813기타: 6. 1차 데스크톱 컴퓨터 사양
49정성태6/16/200419234기타: 5. 53만 원대 Second PC 마련. ^^
48정성태3/2/200421134.NET Framework: 9. 윈도우즈 발전사를 모아 둔 사이트. [1]
47정성태11/14/200519574VS.NET IDE: 7. 한글 OS에서 Internet Explorer 6.0 with SP1의 UI 언어 바꾸는 방법
... [196]  197  198