注æ
ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ è¦ã§ãã ãµã¤ã³ã¤ã³ã¾ãã¯ãã£ã¬ã¯ããªã®å¤æ´ã試ããã¨ãã§ãã¾ãã
ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ è¦ã§ãã ãã£ã¬ã¯ããªã®å¤æ´ã試ããã¨ãã§ãã¾ãã
å ±éè¨èªã©ã³ã¿ã¤ã ã¯ãã©ã³ã¿ã¤ã å¼ã³åºãå¯è½ã©ããã¼ (RCW) ã¨å¼ã°ãããããã·ãä»ã㦠COM ãªãã¸ã§ã¯ããå ¬éãã¾ãã .NET ã¯ã©ã¤ã¢ã³ãã§ã¯ RCW ãæ®éã®ãªãã¸ã§ã¯ãã¨ãã¦ç¤ºããã¾ããããã®ä¸»ãªæ©è½ã¯ã.NET ã¯ã©ã¤ã¢ã³ã㨠COM ãªãã¸ã§ã¯ãã®éã§å¼ã³åºãããã¼ã·ã£ãªã³ã°ãããã¨ã§ãã
ã©ã³ã¿ã¤ã ã¯ãCOM ãªãã¸ã§ã¯ããã¨ã« 1 ã¤ã® RCW ãããã®ãªãã¸ã§ã¯ãã«åå¨ããåç
§ã®æ°ã«é¢ä¿ãªã使ãã¾ãã ã©ã³ã¿ã¤ã ã¯ãåãªãã¸ã§ã¯ãã§ãããã»ã¹ãã¨ã« 1 ã¤ã® RCW ãä¿æãã¾ãã 1 ã¤ã®ã¢ããªã±ã¼ã·ã§ã³ ãã¡ã¤ã³ã¾ãã¯ã¢ãã¼ãã¡ã³ãã§ RCW ã使ããå¥ã®ã¢ããªã±ã¼ã·ã§ã³ ãã¡ã¤ã³ã¾ãã¯ã¢ãã¼ãã¡ã³ãã¸ã®åç
§ã渡ãã¨ãæåã®ãªãã¸ã§ã¯ãã¸ã®ãããã·ã使ç¨ããã¾ãã ãã®ãããã·ã¯æ°ããããã¼ã¸ã ãªãã¸ã§ã¯ãã§ãããæåã® RCW ã¨åãã§ã¯ãªããã¨ã«æ³¨æãã¦ãã ãããã¤ã¾ãããã® 2 ã¤ã®ããã¼ã¸ã ãªãã¸ã§ã¯ãã¯åããã®ã§ã¯ãªãããåã COM ãªãã¸ã§ã¯ãã表ç¾ãã¦ãã¾ãã æ¬¡ã®å³ã示ãããã«ãä»»æã®æ°ã®ããã¼ã¸ã ã¯ã©ã¤ã¢ã³ãããINew
ããã³ INewer
ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå
¬éãã COM ãªãã¸ã§ã¯ãã¸ã®åç
§ãä¿æã§ãã¾ãã
次ã®å³ã¯ãã©ã³ã¿ã¤ã å¼ã³åºãå¯è½ã©ããã¼çµç±ã§ COM ãªãã¸ã§ã¯ãã«ã¢ã¯ã»ã¹ããããã»ã¹ã示ãã¦ãã¾ãã
ã©ã³ã¿ã¤ã ã¯ãã¿ã¤ã ã©ã¤ãã©ãªããæ´¾çããã¡ã¿ãã¼ã¿ã使ç¨ãã¦ãå¼ã³åºããã COM ãªãã¸ã§ã¯ãã¨ãã®ãªãã¸ã§ã¯ãã®ã©ããã¼ã®ä¸¡æ¹ã使ãã¾ãã å RCW ã¯ãã©ãããã COM ãªãã¸ã§ã¯ãã§ã¤ã³ã¿ã¼ãã§ã¤ã¹ ãã¤ã³ã¿ã¼ã®ãã£ãã·ã¥ãä¿æããRCW ãä¸è¦ã«ãªã£ãæç¹ã§ãCOM ãªãã¸ã§ã¯ãã§ã®ãã®åç §ãè§£æ¾ãã¾ãã ã©ã³ã¿ã¤ã ã¯ãRCW ã§ã®ã¬ãã¼ã¸ ã³ã¬ã¯ã·ã§ã³ãå®è¡ãã¾ãã
RCW ã¯ãä»ã®ãã¾ãã¾ãªã¢ã¯ãã£ããã£ãå®è¡ãã¾ãããã©ããããããªãã¸ã§ã¯ãã®ããã«ãããã¼ã¸ã ã³ã¼ãã¨ã¢ã³ããã¼ã¸ã ã³ã¼ãã®éã§ãã¼ã¿ããã¼ã·ã£ãªã³ã°ãã¾ãã å ·ä½çã«ã¯ãRCW ã¯ã¯ã©ã¤ã¢ã³ãã¨ãµã¼ãã¼ã®éã§ãã¼ã¿ã®ç°ãªã表ç¾ã渡ãããã¨ãã常ã«ã¡ã½ãã弿°ãã¡ã½ããã®æ»ãå¤ã®ãã¼ã·ã£ãªã³ã°ãæä¾ãã¾ãã
æ¨æºã©ããã¼ã¯ãçµã¿è¾¼ã¿ã®ãã¼ã·ã£ãªã³ã°è¦åãé©ç¨ãã¾ãã ãã¨ãã°ã.NET ã¯ã©ã¤ã¢ã³ããã string
åã弿°ã®ä¸é¨ã¨ãã¦ã¢ã³ããã¼ã¸ã ãªãã¸ã§ã¯ãã«æ¸¡ãããã¨ããã©ããã¼ã«ãã£ã¦ string
㯠BSTR
åã«å¤æããã¾ãã COM ãªãã¸ã§ã¯ãããããã¼ã¸ãå¼ã³åºãå
ã« BSTR
ãè¿ãããå ´åããã®å¼ã³åºãå
ãåãåãã®ã¯ string
ã§ãã ã¯ã©ã¤ã¢ã³ãã¨ãµã¼ãã¼ã¯ã©ã¡ãããããããã使ãæ
£ãã¦ãããã¼ã¿ãéåä¿¡ãã¾ãã ãã®ä»ã®åã¯ã夿ããå¿
è¦ãããã¾ããã ãã¨ãã°ãæ¨æºçãªã©ããã¼ã¯ããã¼ã¸ã ã³ã¼ãã¨ã¢ã³ããã¼ã¸ã ã³ã¼ãã®éã§ãåã夿ããªãã§ 4 ãã¤ãã®æ´æ°ã常ã«åãæ¸¡ããã¾ãã
鏿ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ãã¼ã·ã£ãªã³ã°
ã©ã³ã¿ã¤ã å¼ã³åºãå¯è½ã©ããã¼ (RCW) ã®ä¸»ãªç®æ¨ã¯ãããã¼ã¸ãã¨ã¢ã³ããã¼ã¸ãã®ããã°ã©ãã³ã° ã¢ãã«ã®éããè¦ããªããããã¨ã§ãã æ¬¡ã®å³ã«ç¤ºãããã«ãRCW ã¯é¸æããã COM ã¤ã³ã¿ã¼ãã§ã¤ã¹ã .NET ã¯ã©ã¤ã¢ã³ãã«å ¬éãããã¨ãªã使ç¨ãã¦ãã·ã¼ã ã¬ã¹ãªç§»è¡ãå®ç¾ãã¾ãã
次ã®å³ã¯ãCOM ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¨ã©ã³ã¿ã¤ã å¼ã³åºãå¯è½ã©ããã¼ã示ãã¦ãã¾ãã
äºåãã¤ã³ãã£ã³ã°ããããªãã¸ã§ã¯ãã¨ãã¦ä½æãããã¨ãRCW ã¯ç¹å®ã®åã«ãªãã¾ãã ããã¯ãCOM ãªãã¸ã§ã¯ããå®è£ ããã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£ ãããªãã¸ã§ã¯ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ããã®ã¡ã½ãããããããã£ãããã³ã¤ãã³ããå ¬éãã¾ãã å³ã§ã¯ãRCW 㯠INew ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå ¬éãã¾ãããIUnknown 㨠IDispatch ã¤ã³ã¿ã¼ãã§ã¤ã¹ã使ç¨ãã¾ãã ããã«ãRCW ã¯ãINew ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ãã¹ã¦ã®ã¡ã³ãã¼ã .NET ã¯ã©ã¤ã¢ã³ãã«å ¬éãã¾ãã
RCW ã¯ããããã©ãããããªãã¸ã§ã¯ãã«ãã£ã¦å ¬éããã¦ãããæ¬¡ã®è¡¨ã«ãªã¹ããããã¤ã³ã¿ã¼ãã§ã¤ã¹ã使ç¨ãã¾ãã
Interface | 説æ |
---|---|
IDispatch | ãªãã¬ã¯ã·ã§ã³ã«ãã COM ãªãã¸ã§ã¯ãã¸ã®é å»¶ãã¤ã³ãã£ã³ã°ã®ããã«ä½¿ç¨ãã¾ãã |
IErrorInfo | ã¨ã©ã¼ããã®ã½ã¼ã¹ããã«ã ãã¡ã¤ã«ããã«ã ã³ã³ããã¹ããããã³ã¨ã©ã¼ãå®ç¾©ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã® GUID (.NET ã¯ã©ã¹ã§ã¯å¸¸ã« GUID_NULL) ã«é¢ãã説ææã示ãã¾ãã |
IProvideClassInfo | ã©ããããã¦ãã COM ãªãã¸ã§ã¯ãã IProvideClassInfo ãå®è£ ããå ´åãRCW ã¯ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ããåæ å ±ãæ½åºãã¦ãããåªããå ID ãæä¾ãã¾ãã |
IUnknown | ãªãã¸ã§ã¯ã IDãå¼·å¶å夿ãããã³æå¹æé管çã®ããã«ä½¿ç¨ãã¾ãã - ãªãã¸ã§ã¯ã ID ã©ã³ã¿ã¤ã ã¯ãåãªãã¸ã§ã¯ãã® IUnknown ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®å¤ãæ¯è¼ãããã¨ã«ãã£ã¦ãè¤æ°ã® COM ãªãã¸ã§ã¯ããåºå¥ãã¾ãã - å¼·å¶å夿 RCW ã¯ãQueryInterface ã¡ã½ããã«ãã£ã¦å®è¡ããããåçãªåã®æ¢ç´¢ãèªèãã¾ãã - æå¹æé管ç RCW 㯠QueryInterface ã¡ã½ããã使ç¨ãã¦ãã¢ã³ããã¼ã¸ ãªãã¸ã§ã¯ãã¸ã®åç §ãåå¾ããã©ã³ã¿ã¤ã ãã©ããã¼ã§ã¬ãã¼ã¸ ã³ã¬ã¯ã·ã§ã³ãå®è¡ãã¦ã¢ã³ããã¼ã¸ ãªãã¸ã§ã¯ããè§£æ¾ãããã¾ã§ãã®åç §ãä¿æãã¾ãã |
å¿ è¦ã«å¿ãã¦ãRCW ã¯ãããã©ãããããªãã¸ã§ã¯ãã«ãã£ã¦å ¬éããã¦ãããæ¬¡ã®è¡¨ã«ãªã¹ããããã¤ã³ã¿ã¼ãã§ã¤ã¹ã使ç¨ãããã¨ãã§ãã¾ãã
Interface | 説æ |
---|---|
IConnectionPoint 㨠IConnectionPointContainer | RCW ã¯ãæ¥ç¶ãã¤ã³ãã®ã¤ãã³ã ã¹ã¿ã¤ã«ãå ¬éãããªãã¸ã§ã¯ãããããªã²ã¼ã ãã¼ã¹ã®ã¤ãã³ãã«å¤æãã¾ãã |
IDispatchEx (.NET Framework ã®ã¿) | ã¯ã©ã¹ã IDispatchEx ãå®è£ ããå ´åãRCW 㯠IExpando ãå®è£ ãã¾ãã IDispatchEx ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ãIDispatch ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®æ¡å¼µçã§ãIDispatch ã¨ã¯ç°ãªããåæã追å ãåé¤ãããã³å¤§æåå°æåãåºå¥ããã¡ã³ãã¼ã®å¼ã³åºããå¯è½ã«ãªãã¾ãã |
IEnumVARIANT | åæããµãã¼ããã COM åãã³ã¬ã¯ã·ã§ã³ã¨ãã¦æ±ããããã¨ãå¯è½ã«ãã¾ãã |