と一致していません。このヘッダー定義に基づいて、構造体は72バイトの大きさに見えます。しかし、ときに私は(私はこれらの構造体の配列へのIntPtrを取得する)C#でそれをマーシャルとのIntPtrが示すメモリを見て、私はこれを参照してください。あなたが見ることができるように、あるCOM相互運用構造定義は、COMヘッダ(vds.h)で定義された構造体があり、メモリレイアウト
0x01717A50 a8 c5 af 28 37 e1 0d 43 -> diskId
0x01717A58 b0 87 e2 ef 94 5f 9f 27 -> diskId
0x01717A60 02 00 00 00 00 00 00 00 -> first 4 bytes are extent type, second 4?
0x01717A68 00 00 70 23 00 00 00 00 -> offset
0x01717A70 00 00 50 4d 74 00 00 00 -> size
0x01717A78 38 3c 22 26 e9 de df 44 -> volumeId
0x01717A80 81 f3 ba ee af e2 ad 2b -> volumeId
0x01717A88 48 98 78 bb 7f dd bc 41 -> plexId
0x01717A90 94 17 db d2 86 01 54 ce -> plexId
0x01717A98 00 00 00 00 00 00 00 00 -> first 4 bytes are membderIdx, second 4?
を2 4説明されていないバイト領域。私はそれが8バイトだとは思わないので、C++のenumはtypedef enum _VDS_DISK_EXTENT_TYPE {
のように宣言されています。 memberIdxと同じですが、ULONGとして宣言されているので、4バイトです。このパディングはどこで定義されていますか、または各フィールドのオフセットはどこに定義されていますか?メモリ内の各オブジェクトを表示し、フィールド間の実際の境界がどこにあるかを把握する必要がある場合、このCOMアセンブリのオブジェクトを使用することはほとんど不可能です。