- Fix header usage

- Remove spaces at the end of the lines
- Put { in a new line, according to http://www.reactos.org/wiki/index.php/Coding_Style
- Add static keyword when possible
- STDCALL -> WINAPI

svn path=/trunk/; revision=19096
This commit is contained in:
Hervé Poussineau 2005-11-09 11:20:53 +00:00
parent e903b5542d
commit 4d7ef5eee5
2 changed files with 121 additions and 84 deletions

View file

@ -7,22 +7,19 @@
* PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org)
*/ */
//#define NDEBUG //#define NDEBUG
#include <debug.h> #include <debug.h>
#include <tchar.h>
#include <windows.h>
#include <commctrl.h>
#include <regstr.h>
#include <stdio.h>
#include "newdev.h" #include "newdev.h"
#include "resource.h"
static BOOL SearchDriver ( PDEVINSTDATA DevInstData, LPCTSTR Path );
static BOOL InstallDriver ( PDEVINSTDATA DevInstData );
static DWORD WINAPI FindDriverProc( LPVOID lpParam );
static BOOL FindDriver ( PDEVINSTDATA DevInstData );
static DEVINSTDATA DevInstData; static DEVINSTDATA DevInstData;
HINSTANCE hDllInstance; HINSTANCE hDllInstance;
HANDLE hThread; HANDLE hThread;
static HFONT static HFONT
CreateTitleFont(VOID) CreateTitleFont(VOID)
@ -72,11 +69,12 @@ CenterWindow(HWND hWnd)
SWP_NOSIZE); SWP_NOSIZE);
} }
INT_PTR CALLBACK static INT_PTR CALLBACK
WelcomeDlgProc(HWND hwndDlg, WelcomeDlgProc(
UINT uMsg, IN HWND hwndDlg,
WPARAM wParam, IN UINT uMsg,
LPARAM lParam) IN WPARAM wParam,
IN LPARAM lParam)
{ {
PDEVINSTDATA DevInstData; PDEVINSTDATA DevInstData;
@ -160,11 +158,12 @@ WelcomeDlgProc(HWND hwndDlg,
return FALSE; return FALSE;
} }
INT_PTR CALLBACK static INT_PTR CALLBACK
CHSourceDlgProc(HWND hwndDlg, CHSourceDlgProc(
UINT uMsg, IN HWND hwndDlg,
WPARAM wParam, IN UINT uMsg,
LPARAM lParam) IN WPARAM wParam,
IN LPARAM lParam)
{ {
PDEVINSTDATA DevInstData; PDEVINSTDATA DevInstData;
@ -196,8 +195,7 @@ CHSourceDlgProc(HWND hwndDlg,
IDC_RADIO_SEARCHHERE, IDC_RADIO_SEARCHHERE,
BM_SETCHECK, BM_SETCHECK,
(WPARAM) TRUE, (WPARAM) TRUE,
(LPARAM) 0); (LPARAM) 0);
} }
break; break;
@ -232,15 +230,16 @@ CHSourceDlgProc(HWND hwndDlg,
return FALSE; return FALSE;
} }
INT_PTR CALLBACK static INT_PTR CALLBACK
SearchDrvDlgProc(HWND hwndDlg, SearchDrvDlgProc(
UINT uMsg, IN HWND hwndDlg,
WPARAM wParam, IN UINT uMsg,
LPARAM lParam) IN WPARAM wParam,
IN LPARAM lParam)
{ {
PDEVINSTDATA DevInstData; PDEVINSTDATA DevInstData;
DWORD dwThreadId; DWORD dwThreadId;
/* Retrieve pointer to the global setup data */ /* Retrieve pointer to the global setup data */
DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg, GWL_USERDATA); DevInstData = (PDEVINSTDATA)GetWindowLongPtr (hwndDlg, GWL_USERDATA);
@ -296,7 +295,8 @@ SearchDrvDlgProc(HWND hwndDlg,
break; break;
case PSN_KILLACTIVE: case PSN_KILLACTIVE:
if (hThread != 0) { if (hThread != 0)
{
SetWindowLong ( hwndDlg, DWL_MSGRESULT, TRUE); SetWindowLong ( hwndDlg, DWL_MSGRESULT, TRUE);
return TRUE; return TRUE;
} }
@ -318,8 +318,10 @@ SearchDrvDlgProc(HWND hwndDlg,
return FALSE; return FALSE;
} }
DWORD WINAPI FindDriverProc( LPVOID lpParam ) static DWORD WINAPI
{ FindDriverProc(
IN LPVOID lpParam)
{
TCHAR drive[] = {'?',':',0}; TCHAR drive[] = {'?',':',0};
size_t nType; size_t nType;
DWORD dwDrives; DWORD dwDrives;
@ -328,15 +330,20 @@ DWORD WINAPI FindDriverProc( LPVOID lpParam )
DevInstData = (PDEVINSTDATA)lpParam; DevInstData = (PDEVINSTDATA)lpParam;
dwDrives = GetLogicalDrives(); dwDrives = GetLogicalDrives();
for (drive[0] = 'A'; drive[0] <= 'Z'; drive[0]++) { for (drive[0] = 'A'; drive[0] <= 'Z'; drive[0]++)
if (dwDrives & i) { {
if (dwDrives & i)
{
nType = GetDriveType( drive ); nType = GetDriveType( drive );
if ((nType == DRIVE_CDROM) || (nType == DRIVE_FIXED)) { if ((nType == DRIVE_CDROM) || (nType == DRIVE_FIXED))
{
/* search for inf file */ /* search for inf file */
if (SearchDriver ( DevInstData, drive )) { if (SearchDriver ( DevInstData, drive ))
{
/* if we found a valid driver inf... */ /* if we found a valid driver inf... */
if (FindDriver ( DevInstData )) { if (FindDriver ( DevInstData ))
{
InstallDriver ( DevInstData ); InstallDriver ( DevInstData );
PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 1, 0); PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 1, 0);
return 0; return 0;
@ -346,16 +353,17 @@ DWORD WINAPI FindDriverProc( LPVOID lpParam )
} }
i <<= 1; i <<= 1;
} }
PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 0, 0); PostMessage(DevInstData->hDialog, WM_SEARCH_FINISHED, 0, 0);
return 0; return 0;
} }
INT_PTR CALLBACK static INT_PTR CALLBACK
FinishDlgProc(HWND hwndDlg, FinishDlgProc(
UINT uMsg, IN HWND hwndDlg,
WPARAM wParam, IN UINT uMsg,
LPARAM lParam) IN WPARAM wParam,
IN LPARAM lParam)
{ {
PDEVINSTDATA DevInstData; PDEVINSTDATA DevInstData;
@ -424,11 +432,12 @@ FinishDlgProc(HWND hwndDlg,
return FALSE; return FALSE;
} }
INT_PTR CALLBACK static INT_PTR CALLBACK
InstFailDlgProc(HWND hwndDlg, InstFailDlgProc(
UINT uMsg, IN HWND hwndDlg,
WPARAM wParam, IN UINT uMsg,
LPARAM lParam) IN WPARAM wParam,
IN LPARAM lParam)
{ {
PDEVINSTDATA DevInstData; PDEVINSTDATA DevInstData;
@ -478,13 +487,14 @@ InstFailDlgProc(HWND hwndDlg,
case PSN_WIZFINISH: case PSN_WIZFINISH:
/* Handle a Finish button click, if necessary */ /* Handle a Finish button click, if necessary */
if (SendDlgItemMessage(hwndDlg, IDC_DONOTSHOWDLG, BM_GETCHECK, (WPARAM) 0, (LPARAM) 0) == BST_CHECKED) { if (SendDlgItemMessage(hwndDlg, IDC_DONOTSHOWDLG, BM_GETCHECK, (WPARAM) 0, (LPARAM) 0) == BST_CHECKED)
{
if(SetupDiGetDeviceRegistryProperty(DevInstData->hDevInfo, if(SetupDiGetDeviceRegistryProperty(DevInstData->hDevInfo,
&DevInstData->devInfoData, &DevInstData->devInfoData,
SPDRP_CONFIGFLAGS, SPDRP_CONFIGFLAGS,
NULL, NULL,
(BYTE *)&config_flags, (BYTE *)&config_flags,
sizeof(config_flags), sizeof(config_flags),
NULL)) NULL))
{ {
@ -513,7 +523,11 @@ InstFailDlgProc(HWND hwndDlg,
} }
BOOL FindDriver ( PDEVINSTDATA DevInstData ) { static BOOL
FindDriver(
IN PDEVINSTDATA DevInstData)
{
BOOL ret; BOOL ret;
ret = SetupDiBuildDriverInfoList(DevInstData->hDevInfo, &DevInstData->devInfoData, SPDIT_COMPATDRIVER); ret = SetupDiBuildDriverInfoList(DevInstData->hDevInfo, &DevInstData->devInfoData, SPDIT_COMPATDRIVER);
@ -543,12 +557,15 @@ BOOL FindDriver ( PDEVINSTDATA DevInstData ) {
} }
BOOL IsDots(const TCHAR* str) { static BOOL
IsDots(IN LPCTSTR str)
{
if(_tcscmp(str, _T(".")) && _tcscmp(str, _T(".."))) return FALSE; if(_tcscmp(str, _T(".")) && _tcscmp(str, _T(".."))) return FALSE;
return TRUE; return TRUE;
} }
TCHAR* GetFileExt(TCHAR* FileName) static LPTSTR
GetFileExt(IN LPTSTR FileName)
{ {
if (FileName == 0) if (FileName == 0)
return _T(""); return _T("");
@ -565,7 +582,11 @@ TCHAR* GetFileExt(TCHAR* FileName)
return _T(""); return _T("");
} }
BOOL SearchDriver ( PDEVINSTDATA DevInstData, const TCHAR* Path ) { static BOOL
SearchDriver(
IN PDEVINSTDATA DevInstData,
IN LPCTSTR Path)
{
WIN32_FIND_DATA wfd; WIN32_FIND_DATA wfd;
SP_DEVINSTALL_PARAMS DevInstallParams; SP_DEVINSTALL_PARAMS DevInstallParams;
TCHAR DirPath[MAX_PATH]; TCHAR DirPath[MAX_PATH];
@ -589,18 +610,21 @@ BOOL SearchDriver ( PDEVINSTDATA DevInstData, const TCHAR* Path ) {
{ {
_tcscpy(FileName, wfd.cFileName); _tcscpy(FileName, wfd.cFileName);
if(IsDots(FileName)) continue; if (IsDots(FileName)) continue;
if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
_tcscpy(FullPath, DirPath); _tcscpy(FullPath, DirPath);
_tcscat(FullPath, FileName); _tcscat(FullPath, FileName);
if(SearchDriver(DevInstData, FullPath)) if(SearchDriver(DevInstData, FullPath))
break; break;
} }
else { else
TCHAR* pszExtension = GetFileExt(FileName); {
LPCTSTR pszExtension = GetFileExt(FileName);
if ((_tcscmp(pszExtension, _T(".inf")) == 0) && (_tcscmp(LastDirPath, DirPath) != 0)){ if ((_tcscmp(pszExtension, _T(".inf")) == 0) && (_tcscmp(LastDirPath, DirPath) != 0))
{
_tcscpy(LastDirPath, DirPath); _tcscpy(LastDirPath, DirPath);
ZeroMemory (&DevInstallParams, sizeof(SP_DEVINSTALL_PARAMS)); ZeroMemory (&DevInstallParams, sizeof(SP_DEVINSTALL_PARAMS));
DevInstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS); DevInstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
@ -610,7 +634,8 @@ BOOL SearchDriver ( PDEVINSTDATA DevInstData, const TCHAR* Path ) {
&DevInstData->devInfoData, &DevInstData->devInfoData,
&DevInstallParams); &DevInstallParams);
if (_tcsclen(DirPath) <= MAX_PATH) { if (_tcsclen(DirPath) <= MAX_PATH)
{
memcpy(DevInstallParams.DriverPath, DirPath, (_tcsclen(DirPath) + 1) * sizeof(TCHAR)); memcpy(DevInstallParams.DriverPath, DirPath, (_tcsclen(DirPath) + 1) * sizeof(TCHAR));
} }
@ -619,23 +644,28 @@ BOOL SearchDriver ( PDEVINSTDATA DevInstData, const TCHAR* Path ) {
&DevInstData->devInfoData, &DevInstData->devInfoData,
&DevInstallParams); &DevInstallParams);
if ( FindDriver ( DevInstData ) ) { if ( FindDriver ( DevInstData ) )
{
if (hFindFile != INVALID_HANDLE_VALUE) if (hFindFile != INVALID_HANDLE_VALUE)
FindClose(hFindFile); FindClose(hFindFile);
return TRUE; return TRUE;
} }
} }
} }
} }
if (hFindFile != INVALID_HANDLE_VALUE) if (hFindFile != INVALID_HANDLE_VALUE)
FindClose(hFindFile); FindClose(hFindFile);
return FALSE; return FALSE;
} }
BOOL InstallDriver ( PDEVINSTDATA DevInstData ) { static BOOL
InstallDriver(
IN PDEVINSTDATA DevInstData)
{
BOOL ret; BOOL ret;
ret = SetupDiCallClassInstaller( ret = SetupDiCallClassInstaller(
@ -742,7 +772,9 @@ BOOL InstallDriver ( PDEVINSTDATA DevInstData ) {
} }
void CleanUp ( void ) { static VOID
CleanUp(VOID)
{
if (DevInstData.devInfoData.cbSize != 0) if (DevInstData.devInfoData.cbSize != 0)
{ {
@ -763,10 +795,10 @@ void CleanUp ( void ) {
BOOL WINAPI BOOL WINAPI
DevInstallW( DevInstallW(
IN HWND hWndParent, IN HWND hWndParent,
IN HINSTANCE hInstance, IN HINSTANCE hInstance,
IN LPCWSTR InstanceId, IN LPCWSTR InstanceId,
IN INT Show) IN INT Show)
{ {
PROPSHEETHEADER psh; PROPSHEETHEADER psh;
@ -796,7 +828,7 @@ DevInstallW(
&DevInstData.devInfoData); &DevInstData.devInfoData);
if (!ret) if (!ret)
{ {
DPRINT("SetupDiOpenDeviceInfoW() failed with error 0x%lx\n", GetLastError()); DPRINT("SetupDiOpenDeviceInfoW() failed with error 0x%lx (InstanceId %S)\n", GetLastError(), InstanceId);
DevInstData.devInfoData.cbSize = 0; DevInstData.devInfoData.cbSize = 0;
CleanUp(); CleanUp();
return FALSE; return FALSE;
@ -832,14 +864,15 @@ DevInstallW(
} }
if (!ret) if (!ret)
{ {
DPRINT("SetupDiGetDeviceRegistryProperty() failed with error 0x%lx\n", GetLastError()); DPRINT("SetupDiGetDeviceRegistryProperty() failed with error 0x%lx (InstanceId %S)\n", GetLastError(), InstanceId);
CleanUp(); CleanUp();
return FALSE; return FALSE;
} }
DPRINT("Installing %S (%S)\n", DevInstData.buffer, InstanceId); DPRINT("Installing %S (%S)\n", DevInstData.buffer, InstanceId);
if ((Show =! SW_HIDE) && (!FindDriver(&DevInstData))) { if ((Show =! SW_HIDE) && (!FindDriver(&DevInstData)))
{
/* Create the Welcome page */ /* Create the Welcome page */
ZeroMemory (&psp, sizeof(PROPSHEETPAGE)); ZeroMemory (&psp, sizeof(PROPSHEETPAGE));
@ -895,7 +928,8 @@ DevInstallW(
DeleteObject(DevInstData.hTitleFont); DeleteObject(DevInstData.hTitleFont);
} }
else { else
{
InstallDriver ( &DevInstData ); InstallDriver ( &DevInstData );
} }
@ -903,10 +937,11 @@ DevInstallW(
return TRUE; return TRUE;
} }
BOOL STDCALL BOOL WINAPI
DllMain (HINSTANCE hInstance, DllMain(
DWORD dwReason, IN HINSTANCE hInstance,
LPVOID lpReserved) IN DWORD dwReason,
IN LPVOID lpReserved)
{ {
if (dwReason == DLL_PROCESS_ATTACH) if (dwReason == DLL_PROCESS_ATTACH)
{ {

View file

@ -1,5 +1,12 @@
#include <windows.h> #include <windows.h>
#include <commctrl.h>
#include <regstr.h>
#include <setupapi.h> #include <setupapi.h>
#include <tchar.h>
#include <stdio.h>
#include "resource.h"
ULONG DbgPrint(PCH Format,...); ULONG DbgPrint(PCH Format,...);
@ -15,9 +22,4 @@ typedef struct _DEVINSTDATA
SP_DRVINFO_DATA drvInfoData; SP_DRVINFO_DATA drvInfoData;
} DEVINSTDATA, *PDEVINSTDATA; } DEVINSTDATA, *PDEVINSTDATA;
BOOL SearchDriver ( PDEVINSTDATA DevInstData, const TCHAR* Path );
BOOL InstallDriver ( PDEVINSTDATA DevInstData );
DWORD WINAPI FindDriverProc( LPVOID lpParam );
BOOL FindDriver ( PDEVINSTDATA DevInstData );
#define WM_SEARCH_FINISHED (WM_USER + 10) #define WM_SEARCH_FINISHED (WM_USER + 10)