73 "expected STG_E_ACCESSDENIED, got 0x%08lx\n",
ret);
82 "expected STG_E_ACCESSDENIED, got 0x%08lx\n",
ret);
90 "expected STG_E_ACCESSDENIED, got 0x%08lx\n",
ret);
98 "expected STG_E_ACCESSDENIED, got 0x%08lx\n",
ret);
106 "expected STG_E_ACCESSDENIED, got 0x%08lx\n",
ret);
117 "expected E_INVALIDARG, got 0x%08lx\n",
ret);
125 ret = IStream_CopyTo(
stream, clone, uzero, &uret, &uret);
139 ret = IStream_Commit(
stream, STGC_DEFAULT);
149 ret = IStream_LockRegion(
stream, uzero, uzero, 0);
151 "expected E_NOTIMPL or S_OK, got 0x%08lx\n",
ret);
156 ret = IStream_UnlockRegion(
stream, uzero, uzero, 0);
159 ret = IStream_UnlockRegion(
stream, uzero, uzero, 0);
162 ret = IStream_UnlockRegion(
stream, uzero, uzero, 0);
170 "expected STG_E_INVALIDPOINTER or E_NOTIMPL, got 0x%08lx\n",
ret);
179 ok(clone ==
NULL,
"expected a NULL IStream object, got %p\n",
stream);
182 refcount = IStream_Release(clone);
183 ok(refcount == 0,
"expected 0, got %ld\n", refcount);
192 unsigned char buf[16];
198 written = 0xdeadbeaf;
203 ok(written == 2,
"expected 2, got %lu\n", written);
208 ok(written == 0xdeadbeaf ||
broken(written == 2) ,
"expected 0xdeadbeaf, got %#lx\n", written);
224 ok(
buf[0] == 0x5e &&
buf[1] == 0xa7,
"expected 5ea7, got %02x%02x\n",
buf[0],
buf[1]);
231 ok(
ret ==
S_FALSE,
"expected S_FALSE, got %#lx (access %#lx, written %lu)\n",
ret,
mode, written);
240 ok(
ret ==
S_OK,
"IStream_Read error %#lx (access %#lx, written %lu)\n",
ret,
mode, written);
245 ok(
ret ==
S_FALSE,
"expected S_FALSE, got %#lx (access %#lx, written %lu)\n",
ret,
mode, written);
246 ok(
count == written,
"expected %lu, got %lu\n", written,
count);
248 ok(
buf[0] == 0x5e &&
buf[1] == 0xa7,
"expected 5ea7, got %02x%02x\n",
buf[0],
buf[1]);
250 memset(&statstg, 0xff,
sizeof(statstg));
256 memset(&statstg, 0xff,
sizeof(statstg));
257 ret = IStream_Stat(
stream, &statstg, STATFLAG_NONAME);
267 hr = IStream_QueryInterface(
stream, &IID_IStream, (
void **)&unk);
269 IUnknown_Release(unk);
272 hr = IStream_QueryInterface(
stream, &IID_ISequentialStream, (
void **)&unk);
275 IUnknown_Release(unk);
279 IUnknown_Release(unk);
288 static const CHAR testA_txt[] =
"\\testA.txt";
290 trace(
"SHCreateStreamOnFileA: testing mode %ld, STGM flags %08lx\n",
mode, stgm);
307 "SHCreateStreamOnFileA: expected HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) "
308 "or HRESULT_FROM_WIN32(ERROR_BAD_PATHNAME), got 0x%08lx\n",
ret);
309 ok(
stream ==
NULL,
"SHCreateStreamOnFileA: expected a NULL IStream object, got %p\n",
stream);
320 ok(
stream ==
NULL,
"SHCreateStreamOnFileA: expected a NULL IStream object, got %p\n",
stream);
325 ok(
stream ==
NULL,
"SHCreateStreamOnFileA: expected a NULL IStream object, got %p\n",
stream);
330 ok(
stream ==
NULL,
"SHCreateStreamOnFileA: expected a NULL IStream object, got %p\n",
stream);
337 ok(
stream ==
NULL,
"SHCreateStreamOnFileA: expected a NULL IStream object, got %p\n",
stream);
341 ok(
ret ==
S_OK,
"SHCreateStreamOnFileA: expected S_OK, got 0x%08lx\n",
ret);
342 ok(
stream !=
NULL,
"SHCreateStreamOnFileA: expected a valid IStream object, got NULL\n");
348 refcount = IStream_Release(
stream);
349 ok(refcount == 0,
"SHCreateStreamOnFileA: expected 0, got %ld\n", refcount);
358 ok(
ret ==
S_OK,
"SHCreateStreamOnFileA: expected S_OK, got 0x%08lx\n",
ret);
359 ok(
stream !=
NULL,
"SHCreateStreamOnFileA: expected a valid IStream object, got NULL\n");
364 refcount = IStream_Release(
stream);
365 ok(refcount == 0,
"SHCreateStreamOnFileA: expected 0, got %ld\n", refcount);
370 ok(
ret ==
S_OK,
"SHCreateStreamOnFileA: expected S_OK, got 0x%08lx\n",
ret);
371 ok(
stream !=
NULL,
"SHCreateStreamOnFileA: expected a valid IStream object, got NULL\n");
379 refcount = IStream_Release(
stream);
380 ok(refcount == 0,
"SHCreateStreamOnFileA: expected 0, got %ld\n", refcount);
383 ok(delret,
"SHCreateStreamOnFileA: could not delete file '%s', got error %ld\n",
396 static const CHAR testW_txt[] =
"\\testW.txt";
398 trace(
"SHCreateStreamOnFileW: testing mode %ld, STGM flags %08lx\n",
mode, stgm);
414 "SHCreateStreamOnFileW: expected HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) or E_INVALIDARG, got 0x%08lx\n",
ret);
415 ok(
stream ==
NULL,
"SHCreateStreamOnFileW: expected a NULL IStream object, got %p\n",
stream);
428 ok(
stream ==
NULL,
"SHCreateStreamOnFileW: expected a NULL IStream object, got %p\n",
stream);
433 ok(
stream ==
NULL,
"SHCreateStreamOnFileW: expected a NULL IStream object, got %p\n",
stream);
438 ok(
stream ==
NULL,
"SHCreateStreamOnFileW: expected a NULL IStream object, got %p\n",
stream);
450 ok(
stream ==
NULL,
"SHCreateStreamOnFileW: expected a NULL IStream object, got %p\n",
stream);
454 ok(
ret ==
S_OK,
"SHCreateStreamOnFileW: expected S_OK, got 0x%08lx\n",
ret);
455 ok(
stream !=
NULL,
"SHCreateStreamOnFileW: expected a valid IStream object, got NULL\n");
461 refcount = IStream_Release(
stream);
462 ok(refcount == 0,
"SHCreateStreamOnFileW: expected 0, got %ld\n", refcount);
471 ok(
ret ==
S_OK,
"SHCreateStreamOnFileW: expected S_OK, got 0x%08lx\n",
ret);
472 ok(
stream !=
NULL,
"SHCreateStreamOnFileW: expected a valid IStream object, got NULL\n");
477 refcount = IStream_Release(
stream);
478 ok(refcount == 0,
"SHCreateStreamOnFileW: expected 0, got %ld\n", refcount);
483 ok(
ret ==
S_OK,
"SHCreateStreamOnFileW: expected S_OK, got 0x%08lx\n",
ret);
484 ok(
stream !=
NULL,
"SHCreateStreamOnFileW: expected a valid IStream object, got NULL\n");
492 refcount = IStream_Release(
stream);
493 ok(refcount == 0,
"SHCreateStreamOnFileW: expected 0, got %ld\n", refcount);
496 ok(delret,
"SHCreateStreamOnFileW: could not delete the test file, got error %ld\n",
510 static const CHAR testEx_txt[] =
"\\testEx.txt";
514 trace(
"SHCreateStreamOnFileEx: testing mode %ld, STGM flags %08lx\n",
mode, stgm);
530 "SHCreateStreamOnFileEx: expected HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) or E_INVALIDARG, got 0x%08lx\n",
ret);
531 ok(
stream ==
NULL,
"SHCreateStreamOnFileEx: expected a NULL IStream object, got %p\n",
stream);
537 win_skip(
"File probably locked by Anti-Virus/Spam software, trying again\n");
543 "SHCreateStreamOnFileEx: expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) or "
544 "HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER), got 0x%08lx\n",
ret);
546 ok(
stream ==
NULL,
"SHCreateStreamOnFileEx: expected a NULL IStream object, got %p\n",
stream);
561 "SHCreateStreamOnFileEx: expected E_INVALIDARG or HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got 0x%08lx\n",
ret);
564 skip(
"SHCreateStreamOnFileEx: STGM_TRANSACTED not supported in this configuration.\n");
570 "SHCreateStreamOnFileEx: expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) or "
571 "HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER), got 0x%08lx\n",
ret);
573 ok(
stream ==
NULL,
"SHCreateStreamOnFileEx: expected a NULL IStream object, got %p\n",
stream);
579 skip(
"Not supported\n");
584 ok(
ret ==
S_OK,
"SHCreateStreamOnFileEx: expected S_OK, got 0x%08lx\n",
ret);
585 ok(
stream !=
NULL,
"SHCreateStreamOnFileEx: expected a valid IStream object, got NULL\n");
591 refcount = IStream_Release(
stream);
592 ok(refcount == 0,
"SHCreateStreamOnFileEx: expected 0, got %ld\n", refcount);
595 ok(delret,
"SHCreateStreamOnFileEx: could not delete the test file, got error %ld\n",
602 win_skip(
"File probably locked by Anti-Virus/Spam software, trying again\n");
606 ok(
ret ==
S_OK,
"SHCreateStreamOnFileEx: expected S_OK, got 0x%08lx\n",
ret);
607 ok(
stream !=
NULL,
"SHCreateStreamOnFileEx: expected a valid IStream object, got NULL\n");
612 refcount = IStream_Release(
stream);
613 ok(refcount == 0,
"SHCreateStreamOnFileEx: expected 0, got %ld\n", refcount);
616 ok(delret,
"SHCreateStreamOnFileEx: could not delete the test file, got error %ld\n",
623 win_skip(
"File probably locked by Anti-Virus/Spam software, trying again\n");
627 ok(
ret ==
S_OK,
"SHCreateStreamOnFileEx: expected S_OK, got 0x%08lx\n",
ret);
628 ok(
stream !=
NULL,
"SHCreateStreamOnFileEx: expected a valid IStream object, got NULL\n");
633 refcount = IStream_Release(
stream);
634 ok(refcount == 0,
"SHCreateStreamOnFileEx: expected 0, got %ld\n", refcount);
643 ok(
ret ==
S_OK,
"SHCreateStreamOnFileEx: expected S_OK, got 0x%08lx\n",
ret);
644 ok(
stream !=
NULL,
"SHCreateStreamOnFileEx: expected a valid IStream object, got NULL\n");
649 refcount = IStream_Release(
stream);
650 ok(refcount == 0,
"SHCreateStreamOnFileEx: expected 0, got %ld\n", refcount);
656 ok(
stream ==
NULL,
"SHCreateStreamOnFileEx: expected a NULL IStream object, got %p\n",
stream);
660 ok(
ret ==
S_OK,
"SHCreateStreamOnFileEx: expected S_OK, got 0x%08lx\n",
ret);
661 ok(
stream !=
NULL,
"SHCreateStreamOnFileEx: expected a valid IStream object, got NULL\n");
666 refcount = IStream_Release(
stream);
667 ok(refcount == 0,
"SHCreateStreamOnFileEx: expected 0, got %ld\n", refcount);
672 ok(
ret ==
S_OK,
"SHCreateStreamOnFileEx: expected S_OK, got 0x%08lx\n",
ret);
673 ok(
stream !=
NULL,
"SHCreateStreamOnFileEx: expected a valid IStream object, got NULL\n");
678 refcount = IStream_Release(
stream);
679 ok(refcount == 0,
"SHCreateStreamOnFileEx: expected 0, got %ld\n", refcount);
683 ok(delret,
"SHCreateStreamOnFileEx: could not delete the test file, got error %ld\n",
697 static const char srcContents[1];
698 static const WCHAR prefix[] = {
'T',
'S',
'T', 0 };
710 ret = IStream_Write(
src, srcContents,
sizeof(srcContents), &written.
LowPart);
726 ok(
read.QuadPart == 1,
"read does not match size: %ld != 1\n",
read.LowPart);
727 ok(written.
QuadPart == 1,
"written does not match size: %ld != 1\n", written.
LowPart);
729 IStream_Release(
dst);
730 IStream_Release(
src);
737 static const BYTE initial[10];
756 hr = IStream_QueryInterface(
stream, &IID_ISequentialStream, (
void **)&unk);
759 IUnknown_Release(unk);
768 ok(
num == 0,
"expected 0, got 0x%08lx\n",
num);
773 ok(
hr ==
S_OK,
"Failed to write, hr %#lx.\n",
hr);
778 ok(
hr ==
S_OK,
"Failed to seek, hr %#lx.\n",
hr);
783 ok(
hr ==
S_OK,
"Failed to read, hr %#lx.\n",
hr);
786 ok(
buff[
i] == 0x55,
"expected 0x55, got 0x%02x at %lu\n",
buff[
i],
i);
795 ok(
num == 0,
"expected 0, got 0x%08lx\n",
num);
800 ok(
hr ==
S_OK,
"Failed to write, hr %#lx.\n",
hr);
805 ok(
hr ==
S_OK,
"Failed to seek, hr %#lx.\n",
hr);
810 ok(
hr ==
S_OK,
"Failed to read, hr %#lx.\n",
hr);
813 ok(
buff[
i] == 0x11,
"expected 0x11, got 0x%02x at %lu\n",
buff[
i],
i);
822 ok(
num == 0,
"expected 0, got 0x%08lx\n",
num);
824 hr = IStream_Clone(
stream, &stream2);
828 IStream_Release(stream2);
835 static const DWORD stgm_access[] = {
841 static const DWORD stgm_sharing[] = {
849 static const DWORD stgm_flags[] = {
#define ERROR_INVALID_PARAMETER
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR lpszPath, DWORD dwMode, IStream **lppStream)
HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR lpszPath, DWORD dwMode, DWORD dwAttributes, BOOL bCreate, IStream *lpTemplate, IStream **lppStream)
HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR lpszPath, DWORD dwMode, IStream **lppStream)
static unsigned char buff[32768]
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLsizei GLfloat distance
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
#define ERROR_FILE_NOT_FOUND
static IBackgroundCopyFile * test_file
static void test_stream_qi(IStream *stream)
static void test_SHCreateStreamOnFileEx_CopyTo(void)
static void test_stream_read_write(IStream *stream, DWORD mode)
static void test_SHCreateStreamOnFileW(DWORD mode, DWORD stgm)
static void test_SHCreateStreamOnFileEx(DWORD mode, DWORD stgm)
static void test_IStream_invalid_operations(IStream *stream, DWORD mode)
static void test_SHCreateMemStream(void)
static void test_SHCreateStreamOnFileA(DWORD mode, DWORD stgm)
#define FILE_ATTRIBUTE_TEMPORARY
#define STGM_SHARE_DENY_NONE
#define STGM_SHARE_EXCLUSIVE
#define STGM_DELETEONRELEASE
#define STGM_SHARE_DENY_WRITE
#define STGM_SHARE_DENY_READ
IStream *WINAPI SHCreateMemStream(const BYTE *lpbData, UINT dwDataLen)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Character const *const prefix
DWORD WINAPI GetLastError(void)
#define STG_E_INVALIDPOINTER
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define STG_E_LOCKVIOLATION
#define ERROR_PATH_NOT_FOUND
#define ERROR_BAD_PATHNAME
#define ERROR_FILE_EXISTS
#define STG_E_ACCESSDENIED