Added YUV routines needed for v4l driver, and in the future possibly
[wine/gsoc-2012-control.git] / dlls / setupapi / diskspace.c
blob0b42056528c22130600d09834f2f03f3aea0e6d8
1 /*
2 * SetupAPI DiskSpace functions
4 * Copyright 2004 CodeWeavers (Aric Stewart)
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #include <stdarg.h>
23 #include "windef.h"
24 #include "winbase.h"
25 #include "wingdi.h"
26 #include "winuser.h"
27 #include "winnls.h"
28 #include "winreg.h"
29 #include "setupapi.h"
30 #include "wine/debug.h"
32 WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
34 typedef struct {
35 WCHAR lpzName[20];
36 LONGLONG dwFreeSpace;
37 LONGLONG dwWantedSpace;
38 } DRIVE_ENTRY, *LPDRIVE_ENTRY;
40 typedef struct {
41 DWORD dwDriveCount;
42 DRIVE_ENTRY Drives[26];
43 } DISKSPACELIST, *LPDISKSPACELIST;
46 /***********************************************************************
47 * SetupCreateDiskSpaceListW (SETUPAPI.@)
49 HDSKSPC WINAPI SetupCreateDiskSpaceListW(PVOID Reserved1, DWORD Reserved2, UINT Flags)
51 WCHAR drives[255];
52 DWORD rc;
53 WCHAR *ptr;
54 LPDISKSPACELIST list=NULL;
56 rc = GetLogicalDriveStringsW(255,drives);
58 if (rc == 0)
59 return NULL;
61 list = HeapAlloc(GetProcessHeap(),0,sizeof(DISKSPACELIST));
63 list->dwDriveCount = 0;
65 ptr = drives;
67 while (*ptr)
69 DWORD type = GetDriveTypeW(ptr);
70 DWORD len;
71 if (type == DRIVE_FIXED)
73 DWORD clusters;
74 DWORD sectors;
75 DWORD bytes;
76 DWORD total;
77 lstrcpyW(list->Drives[list->dwDriveCount].lpzName,ptr);
78 GetDiskFreeSpaceW(ptr,&sectors,&bytes,&clusters,&total);
79 list->Drives[list->dwDriveCount].dwFreeSpace = clusters * sectors *
80 bytes;
81 list->Drives[list->dwDriveCount].dwWantedSpace = 0;
82 list->dwDriveCount++;
84 len = lstrlenW(ptr);
85 len++;
86 ptr+=sizeof(WCHAR)*len;
88 return (HANDLE)list;
92 /***********************************************************************
93 * SetupCreateDiskSpaceListA (SETUPAPI.@)
95 HDSKSPC WINAPI SetupCreateDiskSpaceListA(PVOID Reserved1, DWORD Reserved2, UINT Flags)
97 return SetupCreateDiskSpaceListW( Reserved1, Reserved2, Flags );
101 /***********************************************************************
102 * SetupAddInstallSectionToDiskSpaceListA (SETUPAPI.@)
104 BOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(HDSKSPC DiskSpace,
105 HINF InfHandle, HINF LayoutInfHandle,
106 LPSTR SectionName, PVOID Reserved1, UINT Reserved2)
108 FIXME ("Stub\n");
109 return TRUE;
112 /***********************************************************************
113 * SetupQuerySpaceRequiredOnDriveA (SETUPAPI.@)
115 BOOL WINAPI SetupQuerySpaceRequiredOnDriveA(HDSKSPC DiskSpace,
116 LPSTR DriveSpec, LONGLONG* SpaceRequired,
117 PVOID Reserved1, UINT Reserved2)
119 WCHAR driveW[20];
120 unsigned int i;
121 LPDISKSPACELIST list = (LPDISKSPACELIST)DiskSpace;
122 BOOL rc = FALSE;
123 static const WCHAR bkslsh[]= {'\\',0};
125 MultiByteToWideChar(CP_ACP,0,DriveSpec,-1,driveW,20);
127 lstrcatW(driveW,bkslsh);
129 TRACE("Looking for drive %s\n",debugstr_w(driveW));
131 for (i = 0; i < list->dwDriveCount; i++)
133 TRACE("checking drive %s\n",debugstr_w(list->Drives[i].lpzName));
134 if (lstrcmpW(driveW,list->Drives[i].lpzName)==0)
136 rc = TRUE;
137 *SpaceRequired = list->Drives[i].dwWantedSpace;
138 break;
142 return rc;
145 /***********************************************************************
146 * SetupDestroyDiskSpaceList (SETUPAPI.@)
148 BOOL WINAPI SetupDestroyDiskSpaceList(HDSKSPC DiskSpace)
150 LPDISKSPACELIST list = (LPDISKSPACELIST)DiskSpace;
151 HeapFree(GetProcessHeap(),0,list);
152 return TRUE;