ReactOS 0.4.17-dev-1190-g4c812f4
newdev_private.h File Reference
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
#include <wingdi.h>
#include <winuser.h>
#include <windowsx.h>
#include <newdev.h>
#include <regstr.h>
#include <dll/newdevp.h>
#include <wine/debug.h>
#include "resource.h"
Include dependency graph for newdev_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _DEVINSTDATA
 

Macros

#define WIN32_NO_STATUS
 
#define _INC_WINDOWS
 
#define COM_NO_WINDOWS_H
 
#define COBJMACROS
 
#define WM_SEARCH_FINISHED   (WM_USER + 10)
 
#define WM_INSTALL_FINISHED   (WM_USER + 11)
 

Typedefs

typedef struct _DEVINSTDATA DEVINSTDATA
 
typedef struct _DEVINSTDATA * PDEVINSTDATA
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (newdev)
 
BOOL ScanFoldersForDriver (IN PDEVINSTDATA DevInstData)
 
BOOL PrepareFoldersToScan (IN PDEVINSTDATA DevInstData, IN BOOL IncludeRemovableDevices, IN BOOL IncludeCustomPath, IN HWND hwndCombo OPTIONAL)
 
BOOL InstallCurrentDriver (IN PDEVINSTDATA DevInstData)
 
BOOL CheckBestDriver (_In_ PDEVINSTDATA DevInstData, _In_ PCWSTR pszDir)
 
BOOL DisplayWizard (IN PDEVINSTDATA DevInstData, IN HWND hwndParent, IN UINT startPage)
 

Variables

HINSTANCE hDllInstance
 

Macro Definition Documentation

◆ _INC_WINDOWS

#define _INC_WINDOWS

Definition at line 7 of file newdev_private.h.

◆ COBJMACROS

#define COBJMACROS

Definition at line 10 of file newdev_private.h.

◆ COM_NO_WINDOWS_H

#define COM_NO_WINDOWS_H

Definition at line 8 of file newdev_private.h.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 6 of file newdev_private.h.

◆ WM_INSTALL_FINISHED

#define WM_INSTALL_FINISHED   (WM_USER + 11)

Definition at line 45 of file newdev_private.h.

◆ WM_SEARCH_FINISHED

#define WM_SEARCH_FINISHED   (WM_USER + 10)

Definition at line 44 of file newdev_private.h.

Typedef Documentation

◆ DEVINSTDATA

◆ PDEVINSTDATA

Function Documentation

◆ CheckBestDriver()

BOOL CheckBestDriver ( _In_ PDEVINSTDATA  DevInstData,
_In_ PCWSTR  pszDir 
)

Definition at line 433 of file newdev.c.

436{
437 return SearchDriverRecursive(DevInstData, pszDir);
438}
static BOOL SearchDriverRecursive(IN PDEVINSTDATA DevInstData, IN LPCWSTR Path)
Definition: newdev.c:363
_In_ LPCSTR pszDir
Definition: shellapi.h:612

Referenced by BrowseCallbackProc().

◆ DisplayWizard()

BOOL DisplayWizard ( IN PDEVINSTDATA  DevInstData,
IN HWND  hwndParent,
IN UINT  startPage 
)

Definition at line 1372 of file wizard.c.

1376{
1377 PROPSHEETHEADER psh = {0};
1379 PROPSHEETPAGE psp = {0};
1380 HRESULT hr = CoInitialize(NULL); /* for SHAutoComplete */
1381
1382 /* zero based index */
1383 startPage -= IDD_FIRSTPAGE;
1384
1385 /* Create the Welcome page */
1386 ZeroMemory(&psp, sizeof(PROPSHEETPAGE));
1387 psp.dwSize = sizeof(PROPSHEETPAGE);
1388 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1389 psp.hInstance = hDllInstance;
1390 psp.lParam = (LPARAM)DevInstData;
1391 psp.pszTitle = MAKEINTRESOURCE(DevInstData->bUpdate ? IDS_UPDATEWIZARDTITLE : IDS_INSTALLWIZARDTITLE);
1392 psp.pfnDlgProc = WelcomeDlgProc;
1393 psp.pszTemplate = MAKEINTRESOURCE(IDD_WELCOMEPAGE);
1395
1396 /* Create the Select Source page */
1397 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1398 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_CHSOURCE_TITLE);
1399 psp.pfnDlgProc = CHSourceDlgProc;
1400 psp.pszTemplate = MAKEINTRESOURCE(IDD_CHSOURCE);
1402
1403 /* Create the Search driver page */
1404 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1405 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_SEARCHDRV_TITLE);
1406 psp.pfnDlgProc = SearchDrvDlgProc;
1407 psp.pszTemplate = MAKEINTRESOURCE(IDD_SEARCHDRV);
1409
1410 /* Create the Install driver page */
1411 psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1412 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_INSTALLDRV_TITLE);
1413 psp.pfnDlgProc = InstallDrvDlgProc;
1414 psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLDRV);
1416
1417 /* Create the No driver page */
1418 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1419 psp.pfnDlgProc = NoDriverDlgProc;
1420 psp.pszTemplate = MAKEINTRESOURCE(IDD_NODRIVER);
1422
1423 /* Create the Install failed page */
1424 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1425 psp.pfnDlgProc = InstallFailedDlgProc;
1426 psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLFAILED);
1428
1429 /* Create the Need reboot page */
1430 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1431 psp.pfnDlgProc = NeedRebootDlgProc;
1432 psp.pszTemplate = MAKEINTRESOURCE(IDD_NEEDREBOOT);
1434
1435 /* Create the Finish page */
1436 psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1437 psp.pfnDlgProc = FinishDlgProc;
1438 psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE);
1440
1441 /* Create the property sheet */
1442 psh.dwSize = sizeof(PROPSHEETHEADER);
1443 psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER;
1444 psh.hInstance = hDllInstance;
1445 psh.hwndParent = hwndParent;
1446 psh.nPages = IDD_MAXIMUMPAGE + 1;
1447 psh.nStartPage = startPage;
1448 psh.phpage = ahpsp;
1449 psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
1450 psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER);
1451
1452 /* Create title font */
1453 DevInstData->hTitleFont = CreateTitleFont();
1454
1455 /* Display the wizard */
1456 PropertySheet(&psh);
1457
1458 DeleteObject(DevInstData->hTitleFont);
1459
1460 if (SUCCEEDED(hr))
1462 return TRUE;
1463}
#define IDB_HEADER
Definition: resource.h:30
#define IDB_WATERMARK
Definition: resource.h:13
#define IDD_FINISHPAGE
Definition: resource.h:74
static HINSTANCE hDllInstance
Definition: clb.c:9
static HWND hwndParent
Definition: cryptui.c:299
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: combase.c:2842
#define IDD_CHSOURCE
Definition: resource.h:22
#define IDS_CHSOURCE_TITLE
Definition: resource.h:34
#define IDD_SEARCHDRV
Definition: resource.h:23
#define IDS_SEARCHDRV_TITLE
Definition: resource.h:35
#define IDD_INSTALLDRV
Definition: resource.h:24
#define IDD_FIRSTPAGE
Definition: resource.h:29
#define IDD_NODRIVER
Definition: resource.h:25
#define IDS_INSTALLDRV_TITLE
Definition: resource.h:36
#define IDD_WELCOMEPAGE
Definition: resource.h:21
#define IDS_INSTALLWIZARDTITLE
Definition: resource.h:32
#define IDD_INSTALLFAILED
Definition: resource.h:26
#define IDD_MAXIMUMPAGE
Definition: resource.h:30
#define IDD_NEEDREBOOT
Definition: resource.h:27
#define IDS_UPDATEWIZARDTITLE
Definition: resource.h:33
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:531
pKey DeleteObject()
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define ZeroMemory
Definition: minwinbase.h:31
LONG_PTR LPARAM
Definition: minwindef.h:175
static HFONT CreateTitleFont(VOID)
Definition: wizard.c:1347
static INT_PTR CALLBACK NoDriverDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:989
static INT_PTR CALLBACK NeedRebootDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1189
static INT_PTR CALLBACK WelcomeDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:469
static INT_PTR CALLBACK FinishDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1268
static INT_PTR CALLBACK InstallDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:878
static INT_PTR CALLBACK SearchDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:783
static INT_PTR CALLBACK CHSourceDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:615
static INT_PTR CALLBACK InstallFailedDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1110
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
#define PROPSHEETHEADER
Definition: prsht.h:392
#define CreatePropertySheetPage
Definition: prsht.h:399
#define PSP_USETITLE
Definition: prsht.h:26
#define PSP_DEFAULT
Definition: prsht.h:22
#define PropertySheet
Definition: prsht.h:400
#define PROPSHEETPAGE
Definition: prsht.h:389
Definition: mmc.idl:376

Referenced by DevInstallW(), and InstallDevInstEx().

◆ InstallCurrentDriver()

BOOL InstallCurrentDriver ( IN PDEVINSTDATA  DevInstData)

Definition at line 554 of file newdev.c.

556{
557 BOOL ret;
558
559 TRACE("Installing driver %s: %s\n",
560 debugstr_w(DevInstData->drvInfoData.MfgName),
561 debugstr_w(DevInstData->drvInfoData.Description));
562
565 DevInstData->hDevInfo,
566 &DevInstData->devInfoData);
567 if (!ret)
568 {
569 TRACE("SetupDiCallClassInstaller(DIF_SELECTBESTCOMPATDRV) failed with error 0x%x\n", GetLastError());
570 return FALSE;
571 }
572
575 DevInstData->hDevInfo,
576 &DevInstData->devInfoData);
577 if (!ret)
578 {
579 TRACE("SetupDiCallClassInstaller(DIF_ALLOW_INSTALL) failed with error 0x%x\n", GetLastError());
580 return FALSE;
581 }
582
585 DevInstData->hDevInfo,
586 &DevInstData->devInfoData);
587 if (!ret)
588 {
589 TRACE("SetupDiCallClassInstaller(DIF_NEWDEVICEWIZARD_PREANALYZE) failed with error 0x%x\n", GetLastError());
590 return FALSE;
591 }
592
595 DevInstData->hDevInfo,
596 &DevInstData->devInfoData);
597 if (!ret)
598 {
599 TRACE("SetupDiCallClassInstaller(DIF_NEWDEVICEWIZARD_POSTANALYZE) failed with error 0x%x\n", GetLastError());
600 return FALSE;
601 }
602
605 DevInstData->hDevInfo,
606 &DevInstData->devInfoData);
607 if (!ret)
608 {
609 TRACE("SetupDiCallClassInstaller(DIF_INSTALLDEVICEFILES) failed with error 0x%x\n", GetLastError());
610 return FALSE;
611 }
612
615 DevInstData->hDevInfo,
616 &DevInstData->devInfoData);
617 if (!ret)
618 {
619 TRACE("SetupDiCallClassInstaller(DIF_REGISTER_COINSTALLERS) failed with error 0x%x\n", GetLastError());
620 return FALSE;
621 }
622
625 DevInstData->hDevInfo,
626 &DevInstData->devInfoData);
627 if (!ret)
628 {
629 TRACE("SetupDiCallClassInstaller(DIF_INSTALLINTERFACES) failed with error 0x%x\n", GetLastError());
630 return FALSE;
631 }
632
635 DevInstData->hDevInfo,
636 &DevInstData->devInfoData);
637 if (!ret)
638 {
639 TRACE("SetupDiCallClassInstaller(DIF_INSTALLDEVICE) failed with error 0x%x\n", GetLastError());
640 return FALSE;
641 }
642
645 DevInstData->hDevInfo,
646 &DevInstData->devInfoData);
647 if (!ret)
648 {
649 TRACE("SetupDiCallClassInstaller(DIF_NEWDEVICEWIZARD_FINISHINSTALL) failed with error 0x%x\n", GetLastError());
650 return FALSE;
651 }
652
655 DevInstData->hDevInfo,
656 &DevInstData->devInfoData);
657 if (!ret)
658 {
659 TRACE("SetupDiCallClassInstaller(DIF_DESTROYPRIVATEDATA) failed with error 0x%x\n", GetLastError());
660 return FALSE;
661 }
662
663 return TRUE;
664}
#define FALSE
Definition: types.h:117
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4313
return ret
Definition: mutex.c:147
unsigned int BOOL
Definition: ntddk_ex.h:94
#define debugstr_w
Definition: kernel32.h:32
#define DIF_INSTALLDEVICEFILES
Definition: setupapi.h:143
#define DIF_REGISTER_COINSTALLERS
Definition: setupapi.h:156
#define DIF_INSTALLINTERFACES
Definition: setupapi.h:154
#define DIF_NEWDEVICEWIZARD_PREANALYZE
Definition: setupapi.h:150
#define DIF_INSTALLDEVICE
Definition: setupapi.h:124
#define DIF_ALLOW_INSTALL
Definition: setupapi.h:146
#define DIF_DESTROYPRIVATEDATA
Definition: setupapi.h:134
#define DIF_SELECTBESTCOMPATDRV
Definition: setupapi.h:145
#define DIF_NEWDEVICEWIZARD_POSTANALYZE
Definition: setupapi.h:151
#define DIF_NEWDEVICEWIZARD_FINISHINSTALL
Definition: setupapi.h:152
#define TRACE(s)
Definition: solgame.cpp:4
DWORD WINAPI GetLastError(void)
Definition: except.c:1042

Referenced by DevInstallW(), InstallDriverProc(), and UpdateDriverForPlugAndPlayDevicesW().

◆ PrepareFoldersToScan()

BOOL PrepareFoldersToScan ( IN PDEVINSTDATA  DevInstData,
IN BOOL  IncludeRemovableDevices,
IN BOOL  IncludeCustomPath,
IN HWND hwndCombo  OPTIONAL 
)

Definition at line 476 of file newdev.c.

481{
482 WCHAR drive[] = {'?',':',0};
483 DWORD dwDrives = 0;
484 DWORD i;
485 UINT nType;
486 DWORD CustomTextLength = 0;
489 INT idx = (INT)SendMessageW(hwndCombo, CB_GETCURSEL, 0, 0);
490
491 /* Calculate length needed to store the search paths */
492 if (IncludeRemovableDevices)
493 {
494 dwDrives = GetLogicalDrives();
495 for (drive[0] = 'A', i = 1; drive[0] <= 'Z'; drive[0]++, i <<= 1)
496 {
497 if (dwDrives & i)
498 {
499 nType = GetDriveTypeW(drive);
500 if (nType == DRIVE_REMOVABLE || nType == DRIVE_CDROM)
501 {
502 LengthNeeded += 3;
503 }
504 }
505 }
506 }
507 if (IncludeCustomPath)
508 {
509 CustomTextLength = 1 + ((idx != CB_ERR) ?
510 (INT)SendMessageW(hwndCombo, CB_GETLBTEXTLEN, idx, 0) : ComboBox_GetTextLength(hwndCombo));
511 LengthNeeded += CustomTextLength;
512 }
513
514 /* Allocate space for search paths */
515 HeapFree(GetProcessHeap(), 0, DevInstData->CustomSearchPath);
516 DevInstData->CustomSearchPath = Buffer = HeapAlloc(
518 0,
519 (LengthNeeded + 1) * sizeof(WCHAR));
520 if (!Buffer)
521 {
522 TRACE("HeapAlloc() failed\n");
524 return FALSE;
525 }
526
527 /* Fill search paths */
528 if (IncludeRemovableDevices)
529 {
530 for (drive[0] = 'A', i = 1; drive[0] <= 'Z'; drive[0]++, i <<= 1)
531 {
532 if (dwDrives & i)
533 {
534 nType = GetDriveTypeW(drive);
535 if (nType == DRIVE_REMOVABLE || nType == DRIVE_CDROM)
536 {
537 Buffer += 1 + _swprintf(Buffer, drive);
538 }
539 }
540 }
541 }
542 if (IncludeCustomPath)
543 {
544 Buffer += 1 + ((idx != CB_ERR) ?
545 SendMessageW(hwndCombo, CB_GETLBTEXT, idx, (LPARAM)Buffer) :
546 GetWindowTextW(hwndCombo, Buffer, CustomTextLength));
547 }
548 *Buffer = '\0';
549
550 return TRUE;
551}
Definition: bufpool.h:45
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
unsigned int idx
Definition: utils.c:40
#define GetProcessHeap()
Definition: compat.h:736
#define SetLastError(x)
Definition: compat.h:752
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
Definition: disk.c:497
DWORD WINAPI DECLSPEC_HOTPATCH GetLogicalDrives(void)
Definition: volume.c:513
unsigned long DWORD
Definition: ntddk_ex.h:95
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION _In_ ULONG _Out_opt_ PULONG LengthNeeded
Definition: fltkernel.h:1343
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: sysinfo.c:13
#define _swprintf(buf, format,...)
Definition: sprintf.c:56
short WCHAR
Definition: pedump.c:58
#define INT
Definition: polytest.cpp:20
#define CB_GETLBTEXTLEN
Definition: winuser.h:1982
#define CB_GETLBTEXT
Definition: winuser.h:1981
#define CB_ERR
Definition: winuser.h:2471
#define CB_GETCURSEL
Definition: winuser.h:1972
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
uint16_t * LPWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1382
#define DRIVE_CDROM
Definition: winbase.h:279
#define DRIVE_REMOVABLE
Definition: winbase.h:276
#define ComboBox_GetTextLength(hwndCtl)
Definition: windowsx.h:59

Referenced by CHSourceDlgProc(), DevInstallW(), and WelcomeDlgProc().

◆ ScanFoldersForDriver()

BOOL ScanFoldersForDriver ( IN PDEVINSTDATA  DevInstData)

Definition at line 441 of file newdev.c.

443{
444 BOOL result;
445
446 /* Search in default location */
447 result = SearchDriver(DevInstData, NULL, NULL);
448
449 if (DevInstData->CustomSearchPath)
450 {
451 /* Search only in specified paths */
452 /* We need to check all specified directories to be
453 * sure to find the best driver for the device.
454 */
456 for (Path = DevInstData->CustomSearchPath; *Path != '\0'; Path += wcslen(Path) + 1)
457 {
458 TRACE("Search driver in %s\n", debugstr_w(Path));
459 if (wcslen(Path) == 2 && Path[1] == ':')
460 {
461 if (SearchDriverRecursive(DevInstData, Path))
462 result = TRUE;
463 }
464 else
465 {
466 if (SearchDriver(DevInstData, Path, NULL))
467 result = TRUE;
468 }
469 }
470 }
471
472 return result;
473}
PRTL_UNICODE_STRING_BUFFER Path
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
GLuint64EXT * result
Definition: glext.h:11304
static BOOL SearchDriver(IN PDEVINSTDATA DevInstData, IN LPCWSTR Directory OPTIONAL, IN LPCWSTR InfFile OPTIONAL)
Definition: newdev.c:273
const uint16_t * LPCWSTR
Definition: typedefs.h:57

Referenced by DevInstallW(), and FindDriverProc().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( newdev  )

Variable Documentation

◆ hDllInstance

HINSTANCE hDllInstance
extern

Definition at line 17 of file browser.c.