include: Add STORAGE_HOTPLUG_INFO structure.
[wine.git] / dlls / shlwapi / istream.c
blobb0087209e75bd56292ff240e5dc6a7fb5fcc2007
1 /*
2 * SHLWAPI IStream functions
4 * Copyright 2002 Jon Griffiths
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #include <stdarg.h>
21 #include <string.h>
23 #define COBJMACROS
24 #include "windef.h"
25 #include "winbase.h"
26 #include "winerror.h"
27 #include "winnls.h"
28 #define NO_SHLWAPI_REG
29 #define NO_SHLWAPI_PATH
30 #include "shlwapi.h"
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(shell);
35 /*************************************************************************
36 * @ [SHLWAPI.166]
38 * Determine if a stream has 0 length.
40 * PARAMS
41 * lpStream [I] IStream object
43 * RETURNS
44 * TRUE: If the stream has 0 length
45 * FALSE: Otherwise.
47 BOOL WINAPI SHIsEmptyStream(IStream *lpStream)
49 STATSTG statstg;
50 BOOL bRet = TRUE;
52 TRACE("(%p)\n", lpStream);
54 memset(&statstg, 0, sizeof(statstg));
56 if(SUCCEEDED(IStream_Stat(lpStream, &statstg, 1)))
58 if(statstg.cbSize.QuadPart)
59 bRet = FALSE; /* Non-Zero */
61 else
63 DWORD dummy, read_len;
65 /* Try to read from the stream */
66 if (SUCCEEDED(IStream_Read(lpStream, &dummy, sizeof(dummy), &read_len)) && read_len == sizeof(dummy))
68 LARGE_INTEGER zero;
69 zero.QuadPart = 0;
71 IStream_Seek(lpStream, zero, 0, NULL);
72 bRet = FALSE; /* Non-Zero */
75 return bRet;