mirror of
https://github.com/reactos/reactos.git
synced 2025-08-07 05:23:08 +00:00
- 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:
parent
e903b5542d
commit
4d7ef5eee5
2 changed files with 121 additions and 84 deletions
|
@ -7,18 +7,15 @@
|
||||||
* 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;
|
||||||
|
@ -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;
|
||||||
|
@ -198,7 +197,6 @@ CHSourceDlgProc(HWND hwndDlg,
|
||||||
(WPARAM) TRUE,
|
(WPARAM) TRUE,
|
||||||
(LPARAM) 0);
|
(LPARAM) 0);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -232,11 +230,12 @@ 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;
|
||||||
|
@ -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,7 +318,9 @@ 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;
|
||||||
|
@ -329,14 +331,19 @@ 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;
|
||||||
|
@ -351,11 +358,12 @@ DWORD WINAPI FindDriverProc( LPVOID lpParam )
|
||||||
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,7 +487,8 @@ 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,
|
||||||
|
@ -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,7 +644,8 @@ 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;
|
||||||
|
@ -635,7 +661,11 @@ BOOL SearchDriver ( PDEVINSTDATA DevInstData, const TCHAR* Path ) {
|
||||||
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)
|
||||||
{
|
{
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue