[Wine-devel] ole32/tests: test for incorrect storage creation (eterbug #6846)

amorozov на etersoft.ru amorozov на etersoft.ru
Вт Фев 15 22:11:21 MSK 2011


В сообщении от 15 февраля 2011 roman написал(a):
>  ole32/tests: test for incorrect storage creation (eterbug #6846)

+    static const BYTE pWordBuffer[] = { 0x00, 0x00, 0x00, 0x00 };
Длина magic в начале storage`а восемь байт, а не четыре. И там не нули.

+    mode = GMEM_FIXED|GMEM_ZEROINIT;
+    hMem = GlobalAlloc( mode, 1024);
+    FillMemory( hMem, 1024, 0xff );
Не надо использовать GMEM_ZEROINIT, если мы потом заполняем память 0xff.

+    memcpy( pFileBuffer, stg, 512 );
stg - это не указатель на массив байт, это указатель на COM-интерфейс. 
Сравнивать с ним массив байт бессмысленно, особенно когда мы этот интерфейс 
освободили. После вызова Release для IStorage надо получить указатель на 
HGLOBAL с помощью GetHGlobalFromILockBytes и вызвать для полученного хэндла 
GlobalLock, чтобы получить указатель на память, где лежит образ storage`а.

Для ILockBytes также надо вызвать Release.

Не увидел нигде проверки обнуления какого-нибудь поля, которое первоначально 
было заполнено 0xff.


Подробная информация о списке рассылки Wine-devel