WindowsNT 4.0では、SP3までとSP4からとで、OLEサーバのメソッドのパラメータに
VARIANT型の値を渡したときの動作に違いがありますので、注意が必要です。
SP4からは、VARIANT型の値を渡す場合は、領域のサイズとして、16バイト確保する必要が
あります。
これは、パラメータが参照のみであっても、またVARTYPEが何であっても、必要です。
具体的な例を以下に示します。
VARTYPEが0x0002、すなわちSHORT型の場合、SP3までは以下のような宣言で
問題ありませんでした。
+ VARIANT
|-- VARTYPE SHORT = 0x0002(値がSHORT型であることを示す)
|-- Dummy1 SHORT
|-- Dummy2 SHORT
|-- Dummy3 SHORT
|-- Value SHORT (メソッドに渡す値が入る)
SP4からは以下のように宣言する必要があります。
+ VARIANT
|-- VARTYPE SHORT = 0x0002(値がSHORT型であることを示す)
|-- Dummy1 SHORT
|-- Dummy2 SHORT
|-- Dummy3 SHORT
|-- Value SHORT (メソッドに渡す値が入る)
|-- Dummy4 SHORT
|-- Dummy5 SHORT
|-- Dummy6 SHORT
SP4からはメソッド呼び出しによってDummy4~Dummy6までの領域が0クリアされますので、
サイズが足りないと、領域破壊となってしまいます。
|