$B:n@.(B:2005$BG/(B12$B7n(B6$BF|(B
$B2~D{(B:2006$BG/(B5$B7n(B17$BF|(B
COM/DCOM$B$OK\Mh$O%P%$%J%j5,3J$G$9$,!"%$%s%?!<%u%'!<%9$n;emm$o!"(bidl (Interface Definition Language) $B$r;H$C$F?M4V$,FI$a$k7A$GDj5A$9$k$N$,0lHLE*$G$9!#(B
IDL$B$N%$%s%?!<%u%'!<%9dj5a$g;h$($k%g!<%?7?$o!"(bc$b8@8l(b/c++$b8@8l$n%g!<%?7?$h$h$f$bni$/;w$f$$$^$9!#
$B$7$+$7!"(BCOM/DCOM$B$N%G!<%?7?$h!"(bc$b8@8l(b/c++$b8@8l$n%g!<%?7?$h$o!"87l)$k$o0[$j$c$f$$$^$9!#cm0u$7$j$$$h!"%3%s%q%$%k$k$o@.8y$7$f$b!"
$B$3$3$G$O!"%G!<%?7?$n%^!<%7%c%j%s%0$kh<$&!"(bcom/dcom$b$n
COM/DCOM$B$G$b!"Ns5s7?(B(enum$B7?(B)$B$r;H$&$3$H$,$G$-$^$9!#$7$+$7!"(BCOM/DCOM$B$N4X?t8F$S=P$7$GNs5s7?$N%G!<%?$r
0x800706f5
$BLd$$9g$o$;$NCM$OHO0O30$G$9!#(B
The enumeration value is out of range.
$B$3$N%(%i!<%3!<%i$o!"2<5-$ncm$n9g@.$h$j$c$f$$$^$9!#(b
| $BFbMF(B | $B7k2L(B | $BCM(B |
|---|---|---|
| $B%(%i!<%s%c%h(b | $B%(%i!<(b | 1 |
| $B%U%!%7%j%F%#(B | Win32 | 7 |
| Win32$B%(%i!<%3!<%i(b | RPC_X_ENUM_VALUE_OUT_OF_RANGE | 0x000006F5 |
$B$3$l$O!"(BCOM/DCOM$B$H!"(BC$B8@8l(B/C++$B8@8l$H$G$O!"Ns5s7?$N
C$B8@8l(B/C++$B8@8l$G$O!"FC$K;XDj$r$7$J$1$l$P!"Ns5s7?$O(B4$B%P%$%H$N(Bsigned int$B7?$H$J$j$^$9!#(B
$B$7$+$7!"(BCOM/DCOM$B$G$O!"(B2$B%P%$%H$N(Bunsigned short$B7?$H$J$C$F$$$^$9!#$=$N$?$a!":GBg$G$b(B65535$B$^$G$7$+CM$r
$B$3$N%(%i!<$kax6x$9$k$n$o!"nc$($p
C$B8@8l(B/C++$B8@8l$NNs5s7?$O!"Ii$NCM$r;}$D$3$H$b$G$-$^$9!#(B
$B$3$NNs5s7?$r(BCOM/DCOM$B$N%$%s%?!<%u%'!<%9$g$b;hmq$9$k$h!"
$B$3$N$h$&$JNs5s7?$r(BIDL$B$NDj5A$G;HMQ$7$F$b!"(BMIDL(Microsoft IDL$B%3%s%Q%$%i(B)$B$O%3%s%Q%$%k;~$K$O%(%i!<$r=pno$7$j$$$n$g!"cm0u$,i,mw$g$9!#(b
$B$^$?!"$3$NNs5s7?$r;H$&%$%s%?!<%u%'!<%9$g$b!"(b0$b0j>e$NCM$@$1$rl9g$O!"%(%i!<$h$o$j$j$^$;$s!#>e5-$NNc$G$O!"(BBaz$B$rEO$9>l9g$O@5>o$KF0:n$7$^$9$,!"(BBar$B$rEO$7$?;~E@$G=i$a$F%(%i!<$k$j$j$^$9!#(b
$BCM$r
$B$3$N>l9g$O!"
$B$7$+$7!"CM$r
$B$3$N>l9g$O!"$?$H$(CM$rl9g$G$"$C$F$b!"
$B$3$l$O!"JQ?t(Be$B$,=i4|2=$5$l$F$$$J$$$?$a!"(B($B$?$$$F$$$O(B)0$B!A(B32767$B$NHO0O$rD6$($kCM$,Aw$i$l$F$7$^$&$?$a$G$9!#(B
$B$^$?!"Ns5s7?$NG[Ns$rl9g$K$b!"Cm0U$,I,MW$G$9!#(B
$BNc$($P!"(Bn$B8D$NNs5s7?$NCM$rJV$9!"
$B$3$N>l9g!"9=B$BN(BFooStruct$B$N$&$A!"(Be[5]$B!A(Be[9]$B$K$O(B($B$?$$$F$$$O(B)0$B!A(B32767$B$NHO0O$rD6$($kCM$,F~$C$?$^$^$H$J$j!"%(%i!<$,h/@8$7$^$9!#(b
$B$$$:$l$N>l9g$b!"Ns5s7?$r@5$7$/=i4|2=$7$?>e$G8F$S=P$;$P!"%(%i!<$oh/@8$7$^$;$s!#(b
typedef enum {
Bar = -1,
Baz
} FooEnum;
HRESULT IFoo::Get( [out] FooEnum* e );
FooEnum e;
HRESULT hResult = pFoo->Get(&e);
HRESULT IFoo::GetSet( [in,out] FooEnum* e, [in] bool bGet );
FooEnum e;
HRESULT hResult = pFoo->GetSet(&e, true); // Get
typedef struct {
int n;
FooEnum e[10];
} FooStruct;
HRESULT IFoo::Get( /*[out]*/ FooStruct* s ) {
s->n = 5;
for (int i = 0 ; i < s->n ; i++) {
s->e[i] = Bar;
}
return S_OK;
}
COM/DCOM$B$G$b!"(BC$B8@8l(B/C++$B8@8l$HF1$8$h$&$K!"0z?t$K%]%$%s%?$rEO$9$3$H$G!"4X?t$+$iCM$r
typedef struct {
int x;
int y;
} FooStruct;
HRESULT IFoo::Get( [out] FooStruct* data );
$B$7$+$7!"(BCOM/DCOM$B$G$O!"CM$r
$B4X?t$r8F$S=P$9A0$K!"JQ?t$K%G%U%)%k%HCM$r%;%C%H$7$F$*$/%1!<%9$,$"$j$^$9!#(b
$BNc$($P!"l9g$N$_!"CM$,%;%C%H$5$l$^$9!#$=$&$G$J$1$l$P!"4X?t$r8F$S=P$9A0$K%;%C%H$7$F$*$$$?%G%U%)%k%H$NCM$,I=<($5$l$^$9!#(b
$B$7$+$7!"$3$N%3!<%i$r$=$n$^$^(bcom/dcom$b$k0\?"$9$k$h!"@5$7$/f0:n$7$^$;$s!#(b
COM/DCOM$B$G$O!"(BGet$B4X?t$r8F$S=P$7$?;~E@$G!"JQ?t(Bdata$B$NCM$,(B0$B$K%/%j%"$5$l$^$9!#$=$N$?$a!"(Bm_bFlag$B$H$$$&%U%i%0JQ?t$,56$N>l9g$O!"M=$a%;%C%H$7$F$*$$$?%G%U%)%k%H$NCM$G$O$J$/!"(B0$B$,I=<($5$l$^$9!#(b
$B$?$H$(!"%j%b!<%h%*%v%8%'%/%h$k@\b3$g$-$:!"(bcom/dcom$b$n8f$s=p$7$k<:gt$7$?>l9g$G$"$C$F$b!"JQ?t$NCM$,(B0$B$K%/%j%"$5$l$k$N$G!"Cm0U$,I,MW$G$9!#(B
C$B8@8l(B/C++$B8@8l$H0[$J$j!"(BCOM/DCOM$B$G$O!"4X?t$,8F$S=P$;$J$$>l9g$r9M$($F$*$/I,MW$,$"$j$^$9!#$7$+$7!"4X?t$,8F$S=P$;$J$$>l9g$KHw$($F!"M=$aJQ?t$K%G%U%)%k%HCM$r%;%C%H$7$F$*$/$3$H$O$G$-$^$;$s!#I,$:!"
$BJL$N%9%l%C%I$GJQ?t$NCM$r4F;k$7$F!"CM$,JQ$o$C$?$i2?$+=hM}$r9T$&!"$H$$$&%1!<%9$,$"$j$^$9!#$3$n;~!"4f;k$7$f$$$kjq?t$n%]%$%s%?$r0z?t$keo$7$f!"4x?t$ncf$gcm$r=q$-jq$($f$$$k>l9g$O!"Cm0U$,I,MW$G$9!#(B
C$B8@8l(B/C++$B8@8l$G$O!"4X?t$NCf$GCM$r=q$-49$($F$b!"@5$7$/F0:n$7$^$9!#(B
C$B8@8l(B/C++$B8@8l$N4X?t$GCM$r=q$-49$($k>l9g$N%7!<%1%s%9(b
$B$7$+$7!"CM$r=q$-49$($k4X?t$r(BCOM/DCOM$B$K0\?"$9$k$H!"@5$7$/F0:n$7$^$;$s!#(BCOM/DCOM$B$G$O!"4X?t$r8F$S=P$7$?;~E@$G!"$$$C$?$sCM$,(B0$B$K%/%j%"$5$l$^$9!#$D$^$j!"CM$,(B2$B2sJQ2=$7$?$3$H$K$J$C$F$7$^$&$N$G$9!#(B
COM/DCOM$B$N4X?t$GCM$r=q$-49$($k>l9g$N%7!<%1%s%9(b
COM/DCOM$B$K0\?"$9$k$H!"JQ?t$NCM$O!"4X?t8F$S=P$7$,40N;$9$k$^$G=q$-49$o$i$J$/$J$j$^$9!#$=$N$?$a!"%?%$%_%s%0$K4X$9$kLdBj$bH/@8$9$k$+$b$7$l$^$;$s!#(B
void Foo::Get ( FooStruct* data ) {
:
if (this->m_bFlag) {
data->x = this->m_x;
data->y = this->m_y;
}
:
}
int main ( int argc, char** argv ) {
Foo foo;
:
FooStruct data;
data.x = 1; // $B%G%U%)%k%H(B
data.y = 1; // $B%G%U%)%k%H(B
foo.Get(&data);
printf("%d %d\n", data.x, data.y);
:
}
HRESULT h = foo.Get(&data);
if (h != S_OK) {
data.x = 1; // $B%G%U%)%k%H(B
data.y = 1; // $B%G%U%)%k%H(B
}
$B$J$*!"CM$rl9g$O!"$3$N$h$&$JCM$N=q$-49$($KH<$&ldbj$oh/@8$7$^$;$s!#(bint$b7?$g$"$l$p!"4x?t$r8f$s=p$7$f$b!"cm$,(b0$b$k%/%j%"$5$l$k$3$h$o$j$/!"(bc$b8@8l(b/c++$b8@8l$hf1$8$h$&$kf0:n$7$^$9!#(b
HRESULT IFoo::Get( [out] int* data );
$B$D$^$j!"(BCOM/DCOM$B$N>l9g$O!"(Bint$B7?$N$h$&$J4pK\%G!<%?7?$h!"9=b$bn$h$g$o!"%]%$%s%?$reo$7$?>l9g$NF0:n$,0[$J$C$F$$$^$9$N$G!"Cm0U$,I,MW$G$9!#(B
COM/DCOM$B$N%$%s%?!<%u%'!<%9$g!"(b64kb$b$rd6$($k5pbg$j9=b$bn$r;h$*$&$h$9$k$h!"(bmidl(microsoft IDL$B%3%s%Q%$%i(B)$B$O!"%3%s%Q%$%k;~$K%(%i!<$r=pno$7$^$9!#(b
$B$7$+$7!"(B64KB$B$h$j>.$5$$9=B$BN$r;H$C$F!"%3%s%Q%$%k$,DL$C$?>l9g$G$b!"(BCOM/DCOM$B$N4X?t$r8F$S=P$7$F$_$k$H!"%(%i!<$,5/$-$k$3$h$,$"$j$^$9!#(b
$BNc$($P!"
typedef struct {
int data[2000];
} FooStruct;
$B$=$7$F!"
HRESULT IFoo::Set( [in] FooStruct foo );
$B$3$N9=B$BN$N%5%$%:$O(B8KB$B$J$N$G!"$3$N4X?t$O%3%s%Q%$%k$K@.8y$7$^$9!#$H$3$m$,!"8F$S=P$7$F$_$k$H!"2<5-$n%(%i!<%3!<%i$,jv$5$l!"8f$s=p$7$k<:gt$7$^$9!#(b
| 0x8007000e | $B$3$NA`:n$r40N;$9$k$N$K==J,$J5-21NN0h$,$"$j$^$;$s!#(B |
| Not enough storage is available to complete this operation. |
$B$3$N(BHRESULT$B7?$NCM$KBP1~$9$k(BWin32$B$N%(%i!<%3!<%i$o!"
| 0x0000000e | ERROR_OUTOFMEMORY |
$B$3$N;~!"(BCOM/DCOM$B%5!<%p$g$o!"$+$j$j=ebg$jldbj$,h/@8$7$f$$$k$h$&$g$9!#0ley$3$n%(%i!<$,h/@8$7$?8e$g!"f1$84x?t$r$b$&0ley8f$s=p$7$f$_$k$h!"(b2$b2sl\$+$i$o!"2<5-$n%(%i!<%3!<%i$,jv$5$l$k$h$&$kjq2=$7$^$7$?!#(b
| 0x800703e6 | $B%a%b%j$N>l=j$KL58z$J%"%/%;%9$,$"$j$^$7$?!#(B |
| Invalid access to memory location. | |
| 0x800706ba | RPC$B%5!<%p!<$rmxmq$g$-$^$;$s!#(b |
| The RPC server is unavailable. |
$B$3$l$i$N(BHRESULT$B7?$NCM$KBP1~$9$k(BWin32$B$N%(%i!<%3!<%i$o!"
| 0x000003e6 | ERROR_NOACCESS |
| 0x000006ba | RPC_S_SERVER_UNAVAILABLE |
$B$I$A$i$N%(%i!<%3!<%i$,jv$5$l$k$+$o!">u67$K$h$j$^$9!#(BCOM/DCOM$B%5!<%p$n:n$jj}$k$h$c$f$o!"%5!<%p$g%"%w%j%1!<%7%g%s%(%i!<$,h/@8$7$f$7$^$&$3$h$b$"$k$h$&$g$9!#(b
$B$3$N860x$O!"9=B$BN$N%5%$%:$,Bg$-$9$.$k$3$H$G$9!#(B64KB$B$h$j>.$5$1$l$P%3%s%Q%$%k$K$O@.8y$7$^$9$,!"I,$:$7$b
FooStruct$B9=B$BN$NDj5A$r.$5$/$9$k$H!"$3$N4X?t$r8F$S=P$7$F$b@.8y$9$k$h$&$K$J$j$^$9!#(B
$B
$B$J$*!"4X?t$N0z?t$K9=B$BN$=$N$b$N$rEO$9$N$G$O$J$/!"9=B$BN$N%]%$%s%?$rEO$9$h$&$K$9$l$P!"(B8KB$B$rD6$($kBg$-$J9=B$BN$G$"$C$F$b!"%(%i!<$oh/@8$7$^$;$s!#>e5-$NNc$G8@$($P!"4X?t$r
COM/DCOM$B4X?t$G9=B$BN$r
typedef struct {
int data[1000];
} FooStruct;
HRESULT IFoo::Set( [in] FooStruct* foo );
COM/DCOM$B$r;H$&;~$O!"9=B$BN$N%"%i%$%a%s%H$K$bCm0U$7$J$/$F$O$J$j$^$;$s!#(B
$B9=B$BN$N%"%i%$%a%s%H$O!"(BVisual C++$B$N%G%U%)%k%H$G$O(B8$B%P%$%H6-3&$K$J$C$F$$$^$9!#$3$N@_Dj$rJQ99$7$F$b!"%3%s%Q%$%k$ODL$j$^$9!#$7$+$7!"(BCOM/DCOM$B$N4X?t$r8F$S=P$9$H!"%"%W%j%1!<%7%g%s%(%i!<$,h/@8$7$f$7$^$$$^$9!#(b
Visual C++$B$N@_Dj2hLL(B
$B$G$9$,!"(BCOM/DCOM$B$r;H$&;~$G$b!"9=B$BN$N%"%i%$%a%s%H$rJQ99$G$-$J$$Lu$G$O$"$j$^$;$s!#(B
COM/DCOM$B$N4X?t$G9=B$BN$r;H$&;~$O!"$?$$$F$$!"9=B$BN$rDj5A$7$?%X%C%@%U%!%$%k$r!"(BC++$B8@8l$N%=!<%9%u%!%$%k$h!"%$%s%?!<%u%'!<%9$rdj5a$7$?(bidl$b%u%!%$%k$h!"n>J}$G(B#include$B$9$k$3$H$K$J$k$G$7$g$&!#(B
$B%X%C%@%U%!%$%k$r%$%s%/%k!<%i$9$klo<0?^(b
$B$3$3$G!"9=B$BN$rDj5A$7$?%X%C%@%U%!%$%k$NCf$G!"(B#pragma$B$G;XDj$9$l$P!"(BCOM/DCOM$B$r;H$&;~$G$b!"9=B$BN$N%"%i%$%a%s%H$rJQ99$G$-$^$9!#(B
pragma$B$G%"%i%$%a%s%H$r;XDj$7$?;~$NLO<0?^(b
$B0lJ}!"(BVisual C++$B$N@_Dj$G%"%i%$%a%s%H$rJQ99$7$F$b!"(BMIDL(Microsoft IDL$B%3%s%Q%$%i(B)$B$K$O1F6A$7$^$;$s!#$9$k$H!"(BIDL$B%U%!%$%k$H!"(BC++$B8@8l$N%=!<%9%u%!%$%k$h$g!"%"%i%$%a%s%h$,?)$$0c$c$f$7$^$$$^$9!#$=$n7k2l!"%"%w%j%1!<%7%g%s%(%i!<$,h/@8$7$^$9!#(b
$B@_Dj2hLL$G%"%i%$%a%s%H$r;XDj$7$?;~$NLO<0?^(b
$B$H$3$m$G!"(BCOM/DCOM$B$r;H$&;~$K!"9=B$BN$N%"%i%$%a%s%H$r;XDj$9$k$N$O!"$I$&$$$&0UL#$,$"$k$N$G$7$g$&$+!#(B
C++$B8@8l$N%=!<%9%u%!%$%k$kbp$7$f%"%i%$%a%s%h$r;xdj$9$k$h!"9=b$bn$n%a%b%j>CHqNL$r>/$J$/$9$k$3$H$,$G$-$^$9!#$7$+$7!"(BIDL$B%U%!%$%k$KBP$7$F%"%i%$%a%s%H$r;XDj$7$F$b!"%/%i%$%"%s%H$H%5!<%p$n4v$ge>Aw$5$l$k%G!<%?nl$r8:$i$;$klu$g$o$j$$$h$&$g$9!#(b
COM/DCOM$B$N%^!<%7%c%j%s%0$o!"2<5-$n$h$&$k$j$c$f$$$^$9!#(b
$B%G!<%?7a<0$njq49$h%g!<%?e>Aw$NLO<0?^(b
COM/DCOM$B$O%P%$%J%j5,3J$G$9!#%/%i%$%"%s%H$H%5!<%p$n4v$n%g!<%?e>Aw7A<0$o!"(bndr (Network Data Representation) $B$H$7$F7h$a$i$l$F$$$^$9!#(B
C++$B8@8l$N9=B$BN$N7A<0$h!"(bndr$b7a<0$h$njq49$o!"%w%m%-%7$h%9%?%v$,9t$$$^$9!#%w%m%-%7$h%9%?%v$o!"(bidl$b%u%!%$%k$+$i!"(bmidl(microsoft IDL $B%3%s%Q%$%i(B)$B$K$h$C$F!"%W%m%-%7!&%9%?%V(BDLL$B$H$7$F@8@.$5$l$^$9!#(B
IDL$B%U%!%$%k$KBP$9$k%"%i%$%a%s%H$N;XDj$O!"%/%i%$%"%s%H$d%5!<%p$+$i!"$i$n$h$&$j%"%i%$%a%s%h$g9=b$bn$,eo$5$l$f$/$k$+$r!"%w%m%-%7$h%9%?%v$k65$($f$"$2$k!"$h$$$&0ul#$k$j$k$h$&$g$9!#(b
Visual C++$B$N@_Dj$G%"%i%$%a%s%H$rJQ99$7$F$7$^$&$H!"%W%m%-%7$,A[Dj$7$F$$$k%G!<%?7a<0$h!"
$B%"%i%$%a%s%H$NIT@09g(B
$B%"%W%j%1!<%7%g%s%(%i!<$o!"(bchkesp.c$b$h$$$&%u%!%$%k$gh/@8$7$^$7$?!#$3$n%u%!%$%k$,!"(bc++$b8@8l$n9=b$bn$h(bndr$b7a<0$h$njq49$k4x$o$c$f$$$k$h$&$g$9!#(b
$B%G!<%?$ne>AwNL$O8:$i$;$^$;$s$,!"%"%i%$%a%s%H$r>.$5$/$9$k$3$H$G!"$h$jBg$-$J9=B$BN$r
$BNc$($P!"
$B$3$N9=B$BN$N%5%$%:$O!"(B1$B%P%$%H6-3&$G$"$l$P(B9$B%P%$%H!"(B8$B%P%$%H6-3&$G$"$l$P(B16$B%P%$%H$H$J$j$^$9!#(B
$B$3$N(BBarStruct$B9=B$BN$r;H$C$F!"
$B%G%U%)%k%H$N(B8$B%P%$%H6-3&$G$O!"(BFooStruct$B$N%5%$%:$O(B72KB$B$H$J$k$?$a!"%3%s%Q%$%k$G$-$^$;$s!#$7$+$7!"%"%i%$%a%s%H$r(B1$B%P%$%H6-3&$K$9$k$H!"%5%$%:$,(B40KB$B$H$J$j!"(BCOM/DCOM$B$N4X?t$G
typedef struct {
char a;
double b;
} BarStruct;
typedef struct {
BarStruct data[4500];
} FooStruct;