ReactOS  0.4.15-dev-1201-gb2cf5a4
infinst.c
Go to the documentation of this file.
1 /*
2  * ReactOS INF Helper
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  *
18  * PROJECT: INF Helper
19  * FILE: infinst.c
20  * PURPOSE: Pass INF files to setupapi.dll for execution
21  * PROGRAMMER: Michael Biggins
22  * UPDATE HISTORY:
23  * Created 19/09/2004
24  */
25 #include <windows.h>
26 #include <tchar.h>
27 #include <stdio.h>
28 
29 #ifdef UNICODE
31 #define InstallHinfSection InstallHinfSectionW
32 #else
34 #define InstallHinfSection InstallHinfSectionA
35 #endif
36 
37 #define FILEOPEN_FILTER TEXT("Inf Files (*.inf)\0*.inf\0All Files (*.*)\0*.*\0\0")
38 #define FILEOPEN_TITLE TEXT("INF file to process")
39 #define FILEOPEN_DEFEXT TEXT(".inf")
40 #define INF_COMMAND TEXT("DefaultInstall 128 %s")
41 
42 int
44 {
45  TCHAR infCommand[MAX_PATH + 32];
46 
47  if (argc <= 1)
48  {
49  TCHAR FileName[MAX_PATH + 1];
50  OPENFILENAME ofc;
51  int rv;
52 
53  ZeroMemory(&ofc, sizeof(ofc));
55  ofc.lStructSize = sizeof(ofc);
57  ofc.nFilterIndex = 1;
61  ofc.lpstrFile = FileName;
62  ofc.nMaxFile = sizeof(FileName) / sizeof(TCHAR);
63 
64  rv = GetOpenFileName(&ofc);
65 
66  if (rv == 0)
67  return 1;
68 
69  _stprintf(infCommand, INF_COMMAND, FileName);
70  }
71  else
72  {
73  if (_tcslen(argv[1]) > MAX_PATH)
74  {
75  MessageBox(NULL, TEXT("Command line too long to be a valid file name"), NULL, MB_OK | MB_ICONERROR);
76  return 2; /* User error */
77  }
78  _stprintf(infCommand, INF_COMMAND, argv[1]);
79  }
80 
81  InstallHinfSection(NULL, NULL, infCommand, 0);
82 
83  return 0;
84 }
#define OFN_FILEMUSTEXIST
Definition: commdlg.h:106
int _tmain(int argc, TCHAR *argv[])
Definition: infinst.c:43
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
static int argc
Definition: ServiceArgs.c:12
#define OFN_LONGNAMES
Definition: commdlg.h:108
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define ZeroMemory
Definition: winbase.h:1648
LPCSTR lpstrDefExt
Definition: commdlg.h:345
TCHAR * cmdline
Definition: stretchblt.cpp:32
#define argv
Definition: mplay32.c:18
int32_t INT
Definition: typedefs.h:58
#define GetOpenFileName
Definition: commdlg.h:665
DWORD nMaxFile
Definition: commdlg.h:337
void WINAPI InstallHinfSectionW(HWND hwnd, HINSTANCE handle, LPCWSTR cmdline, INT show)
Definition: install.c:1465
#define FILEOPEN_DEFEXT
Definition: infinst.c:39
size_t __cdecl _tcslen(const _TCHAR *str)
Definition: tcslen.h:9
smooth NULL
Definition: ftsmooth.c:416
#define FILEOPEN_TITLE
Definition: infinst.c:38
const char * LPCSTR
Definition: xmlstorage.h:183
#define InstallHinfSection
Definition: infinst.c:34
#define OFN_PATHMUSTEXIST
Definition: commdlg.h:117
char TCHAR
Definition: xmlstorage.h:189
#define MAX_PATH
Definition: compat.h:34
DWORD lStructSize
Definition: commdlg.h:329
#define WINAPI
Definition: msvc.h:6
#define INF_COMMAND
Definition: infinst.c:40
#define MB_ICONERROR
Definition: winuser.h:781
#define MessageBox
Definition: winuser.h:5797
#define _stprintf
Definition: utility.h:124
struct _FileName FileName
Definition: fatprocs.h:893
#define TEXT(s)
Definition: k32.h:26
VOID WINAPI InstallHinfSectionA(HWND hwnd, HINSTANCE handle, LPCSTR cmdline, INT show)
Definition: install.c:1598
LPSTR lpstrFile
Definition: commdlg.h:336
#define FILEOPEN_FILTER
Definition: infinst.c:37
LPCSTR lpstrFilter
Definition: commdlg.h:332
#define MB_OK
Definition: winuser.h:784
LPCSTR lpstrTitle
Definition: commdlg.h:341
DWORD nFilterIndex
Definition: commdlg.h:335
DWORD Flags
Definition: commdlg.h:342