static void test_pic(const unsigned char *imgdata, unsigned int imgsize) { LPSTREAM stream; HGLOBAL hglob; LPBYTE data; HRESULT hres; LARGE_INTEGER seekto; ULARGE_INTEGER newpos1; /* Let the fun begin */ hglob = GlobalAlloc (0, imgsize); data = GlobalLock (hglob); memcpy(data, imgdata, imgsize); hres = CreateStreamOnHGlobal (hglob, FALSE, &stream); ok (hres == S_OK, "createstreamonhglobal failed? doubt it... hres 0x%08lx\n", hres); memset(&seekto,0,sizeof(seekto)); hres = IStream_Seek(stream,seekto,SEEK_CUR,&newpos1); ok (hres == S_OK, "istream seek failed? doubt it... hres 0x%08lx\n", hres); test_pic_with_stream(stream, imgsize); /* again with Non Statable and Non Seekable stream */ stream = (LPSTREAM)NoStatStreamImpl_Construct(hglob); test_pic_with_stream(stream, 0); }
static void test_pic(const unsigned char *imgdata, unsigned int imgsize) { LPSTREAM stream; HGLOBAL hglob; LPBYTE data; HRESULT hres; LARGE_INTEGER seekto; ULARGE_INTEGER newpos1; DWORD * header; unsigned int i,j; /* Let the fun begin */ hglob = GlobalAlloc (0, imgsize); data = GlobalLock (hglob); memcpy(data, imgdata, imgsize); GlobalUnlock(hglob); data = NULL; hres = CreateStreamOnHGlobal (hglob, FALSE, &stream); ok (hres == S_OK, "createstreamonhglobal failed? doubt it... hres 0x%08x\n", hres); memset(&seekto,0,sizeof(seekto)); hres = IStream_Seek(stream,seekto,SEEK_CUR,&newpos1); ok (hres == S_OK, "istream seek failed? doubt it... hres 0x%08x\n", hres); test_pic_with_stream(stream, imgsize); IStream_Release(stream); /* again with Non Statable and Non Seekable stream */ stream = (LPSTREAM)NoStatStreamImpl_Construct(hglob); hglob = 0; /* Non-statable impl always deletes on release */ test_pic_with_stream(stream, 0); IStream_Release(stream); for (i = 1; i <= 8; i++) { /* more fun!!! */ hglob = GlobalAlloc (0, imgsize + i * (2 * sizeof(DWORD))); data = GlobalLock (hglob); header = (DWORD *)data; /* multiple copies of header */ memcpy(data,"lt\0\0",4); header[1] = imgsize; for (j = 2; j <= i; j++) { memcpy(&(header[2 * (j - 1)]), header, 2 * sizeof(DWORD)); } memcpy(data + i * (2 * sizeof(DWORD)), imgdata, imgsize); GlobalUnlock(hglob); data = NULL; hres = CreateStreamOnHGlobal (hglob, FALSE, &stream); ok (hres == S_OK, "createstreamonhglobal failed? doubt it... hres 0x%08x\n", hres); memset(&seekto,0,sizeof(seekto)); hres = IStream_Seek(stream,seekto,SEEK_CUR,&newpos1); ok (hres == S_OK, "istream seek failed? doubt it... hres 0x%08x\n", hres); test_pic_with_stream(stream, imgsize); IStream_Release(stream); /* again with Non Statable and Non Seekable stream */ stream = (LPSTREAM)NoStatStreamImpl_Construct(hglob); hglob = 0; /* Non-statable impl always deletes on release */ test_pic_with_stream(stream, 0); IStream_Release(stream); } }