ReactOS  0.4.15-dev-5112-g22d8c0f
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 _DEVINSTDATAPDEVINSTDATA
 

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 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

◆ DisplayWizard()

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

Definition at line 1328 of file wizard.c.

1332 {
1333  PROPSHEETHEADER psh = {0};
1334  HPROPSHEETPAGE ahpsp[IDD_MAXIMUMPAGE + 1];
1335  PROPSHEETPAGE psp = {0};
1336  HRESULT hr = CoInitialize(NULL); /* for SHAutoComplete */
1337 
1338  /* zero based index */
1339  startPage -= IDD_FIRSTPAGE;
1340 
1341  /* Create the Welcome page */
1342  ZeroMemory(&psp, sizeof(PROPSHEETPAGE));
1343  psp.dwSize = sizeof(PROPSHEETPAGE);
1344  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1345  psp.hInstance = hDllInstance;
1346  psp.lParam = (LPARAM)DevInstData;
1347  psp.pszTitle = MAKEINTRESOURCE(DevInstData->bUpdate ? IDS_UPDATEWIZARDTITLE : IDS_INSTALLWIZARDTITLE);
1348  psp.pfnDlgProc = WelcomeDlgProc;
1349  psp.pszTemplate = MAKEINTRESOURCE(IDD_WELCOMEPAGE);
1351 
1352  /* Create the Select Source page */
1353  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1354  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_CHSOURCE_TITLE);
1355  psp.pfnDlgProc = CHSourceDlgProc;
1356  psp.pszTemplate = MAKEINTRESOURCE(IDD_CHSOURCE);
1358 
1359  /* Create the Search driver page */
1360  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1361  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_SEARCHDRV_TITLE);
1362  psp.pfnDlgProc = SearchDrvDlgProc;
1363  psp.pszTemplate = MAKEINTRESOURCE(IDD_SEARCHDRV);
1365 
1366  /* Create the Install driver page */
1367  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1368  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_INSTALLDRV_TITLE);
1369  psp.pfnDlgProc = InstallDrvDlgProc;
1370  psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLDRV);
1372 
1373  /* Create the No driver page */
1374  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1375  psp.pfnDlgProc = NoDriverDlgProc;
1376  psp.pszTemplate = MAKEINTRESOURCE(IDD_NODRIVER);
1378 
1379  /* Create the Install failed page */
1380  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1381  psp.pfnDlgProc = InstallFailedDlgProc;
1382  psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLFAILED);
1384 
1385  /* Create the Need reboot page */
1386  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1387  psp.pfnDlgProc = NeedRebootDlgProc;
1388  psp.pszTemplate = MAKEINTRESOURCE(IDD_NEEDREBOOT);
1390 
1391  /* Create the Finish page */
1392  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1393  psp.pfnDlgProc = FinishDlgProc;
1394  psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE);
1396 
1397  /* Create the property sheet */
1398  psh.dwSize = sizeof(PROPSHEETHEADER);
1399  psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER;
1400  psh.hInstance = hDllInstance;
1401  psh.hwndParent = hwndParent;
1402  psh.nPages = IDD_MAXIMUMPAGE + 1;
1403  psh.nStartPage = startPage;
1404  psh.phpage = ahpsp;
1405  psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
1406  psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER);
1407 
1408  /* Create title font */
1409  DevInstData->hTitleFont = CreateTitleFont();
1410 
1411  /* Display the wizard */
1412  PropertySheet(&psh);
1413 
1414  DeleteObject(DevInstData->hTitleFont);
1415 
1416  if (SUCCEEDED(hr))
1417  CoUninitialize();
1418  return TRUE;
1419 }
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define IDD_INSTALLDRV
Definition: resource.h:24
static INT_PTR CALLBACK InstallDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:834
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
#define IDS_INSTALLWIZARDTITLE
Definition: resource.h:32
#define IDD_NEEDREBOOT
Definition: resource.h:27
#define IDS_INSTALLDRV_TITLE
Definition: resource.h:36
#define ZeroMemory
Definition: winbase.h:1667
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
#define IDD_SEARCHDRV
Definition: resource.h:23
#define IDD_NODRIVER
Definition: resource.h:25
#define IDS_UPDATEWIZARDTITLE
Definition: resource.h:33
#define IDB_HEADER
Definition: resource.h:30
static INT_PTR CALLBACK NoDriverDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:945
if SUCCEEDED(hr)
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
#define IDD_CHSOURCE
Definition: resource.h:22
#define IDD_FIRSTPAGE
Definition: resource.h:29
#define PROPSHEETHEADER
Definition: prsht.h:392
static HWND hwndParent
Definition: cryptui.c:300
LONG_PTR LPARAM
Definition: windef.h:208
static INT_PTR CALLBACK SearchDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:739
#define IDD_WELCOMEPAGE
Definition: resource.h:21
#define CreatePropertySheetPage
Definition: prsht.h:399
static HINSTANCE hDllInstance
Definition: clb.c:30
#define PSP_DEFAULT
Definition: prsht.h:22
LONG HRESULT
Definition: typedefs.h:79
static INT_PTR CALLBACK InstallFailedDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1066
static HFONT CreateTitleFont(VOID)
Definition: wizard.c:1303
static INT_PTR CALLBACK NeedRebootDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1145
#define IDD_FINISHPAGE
Definition: resource.h:34
#define IDS_CHSOURCE_TITLE
Definition: resource.h:34
#define IDD_INSTALLFAILED
Definition: resource.h:26
#define PSP_USETITLE
Definition: prsht.h:26
#define IDS_SEARCHDRV_TITLE
Definition: resource.h:35
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
#define IDB_WATERMARK
Definition: resource.h:4
#define NULL
Definition: types.h:112
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
#define PropertySheet
Definition: prsht.h:400
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 CHSourceDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:583
#define IDD_MAXIMUMPAGE
Definition: resource.h:30
static INT_PTR CALLBACK FinishDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1224
#define PROPSHEETPAGE
Definition: prsht.h:389

Referenced by DevInstallW(), and InstallDevInstEx().

◆ InstallCurrentDriver()

BOOL InstallCurrentDriver ( IN PDEVINSTDATA  DevInstData)

Definition at line 521 of file newdev.c.

523 {
524  BOOL ret;
525 
526  TRACE("Installing driver %s: %s\n",
527  debugstr_w(DevInstData->drvInfoData.MfgName),
528  debugstr_w(DevInstData->drvInfoData.Description));
529 
532  DevInstData->hDevInfo,
533  &DevInstData->devInfoData);
534  if (!ret)
535  {
536  TRACE("SetupDiCallClassInstaller(DIF_SELECTBESTCOMPATDRV) failed with error 0x%x\n", GetLastError());
537  return FALSE;
538  }
539 
542  DevInstData->hDevInfo,
543  &DevInstData->devInfoData);
544  if (!ret)
545  {
546  TRACE("SetupDiCallClassInstaller(DIF_ALLOW_INSTALL) failed with error 0x%x\n", GetLastError());
547  return FALSE;
548  }
549 
552  DevInstData->hDevInfo,
553  &DevInstData->devInfoData);
554  if (!ret)
555  {
556  TRACE("SetupDiCallClassInstaller(DIF_NEWDEVICEWIZARD_PREANALYZE) failed with error 0x%x\n", GetLastError());
557  return FALSE;
558  }
559 
562  DevInstData->hDevInfo,
563  &DevInstData->devInfoData);
564  if (!ret)
565  {
566  TRACE("SetupDiCallClassInstaller(DIF_NEWDEVICEWIZARD_POSTANALYZE) failed with error 0x%x\n", GetLastError());
567  return FALSE;
568  }
569 
572  DevInstData->hDevInfo,
573  &DevInstData->devInfoData);
574  if (!ret)
575  {
576  TRACE("SetupDiCallClassInstaller(DIF_INSTALLDEVICEFILES) failed with error 0x%x\n", GetLastError());
577  return FALSE;
578  }
579 
582  DevInstData->hDevInfo,
583  &DevInstData->devInfoData);
584  if (!ret)
585  {
586  TRACE("SetupDiCallClassInstaller(DIF_REGISTER_COINSTALLERS) failed with error 0x%x\n", GetLastError());
587  return FALSE;
588  }
589 
592  DevInstData->hDevInfo,
593  &DevInstData->devInfoData);
594  if (!ret)
595  {
596  TRACE("SetupDiCallClassInstaller(DIF_INSTALLINTERFACES) failed with error 0x%x\n", GetLastError());
597  return FALSE;
598  }
599 
602  DevInstData->hDevInfo,
603  &DevInstData->devInfoData);
604  if (!ret)
605  {
606  TRACE("SetupDiCallClassInstaller(DIF_INSTALLDEVICE) failed with error 0x%x\n", GetLastError());
607  return FALSE;
608  }
609 
612  DevInstData->hDevInfo,
613  &DevInstData->devInfoData);
614  if (!ret)
615  {
616  TRACE("SetupDiCallClassInstaller(DIF_NEWDEVICEWIZARD_FINISHINSTALL) failed with error 0x%x\n", GetLastError());
617  return FALSE;
618  }
619 
622  DevInstData->hDevInfo,
623  &DevInstData->devInfoData);
624  if (!ret)
625  {
626  TRACE("SetupDiCallClassInstaller(DIF_DESTROYPRIVATEDATA) failed with error 0x%x\n", GetLastError());
627  return FALSE;
628  }
629 
630  return TRUE;
631 }
#define TRUE
Definition: types.h:120
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
#define DIF_NEWDEVICEWIZARD_PREANALYZE
Definition: setupapi.h:147
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4024
#define DIF_NEWDEVICEWIZARD_POSTANALYZE
Definition: setupapi.h:148
#define DIF_DESTROYPRIVATEDATA
Definition: setupapi.h:131
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define debugstr_w
Definition: kernel32.h:32
#define DIF_REGISTER_COINSTALLERS
Definition: setupapi.h:153
#define DIF_NEWDEVICEWIZARD_FINISHINSTALL
Definition: setupapi.h:149
#define DIF_INSTALLDEVICE
Definition: setupapi.h:121
#define TRACE(s)
Definition: solgame.cpp:4
int ret
#define DIF_INSTALLINTERFACES
Definition: setupapi.h:151
#define DIF_ALLOW_INSTALL
Definition: setupapi.h:143
#define DIF_SELECTBESTCOMPATDRV
Definition: setupapi.h:142
#define DIF_INSTALLDEVICEFILES
Definition: setupapi.h:140

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 447 of file newdev.c.

452 {
453  WCHAR drive[] = {'?',':',0};
454  DWORD dwDrives = 0;
455  DWORD i;
456  UINT nType;
457  DWORD CustomTextLength = 0;
458  DWORD LengthNeeded = 0;
459  LPWSTR Buffer;
460 
461  /* Calculate length needed to store the search paths */
462  if (IncludeRemovableDevices)
463  {
464  dwDrives = GetLogicalDrives();
465  for (drive[0] = 'A', i = 1; drive[0] <= 'Z'; drive[0]++, i <<= 1)
466  {
467  if (dwDrives & i)
468  {
469  nType = GetDriveTypeW(drive);
470  if (nType == DRIVE_REMOVABLE || nType == DRIVE_CDROM)
471  {
472  LengthNeeded += 3;
473  }
474  }
475  }
476  }
477  if (IncludeCustomPath)
478  {
479  CustomTextLength = 1 + ComboBox_GetTextLength(hwndCombo);
480  LengthNeeded += CustomTextLength;
481  }
482 
483  /* Allocate space for search paths */
484  HeapFree(GetProcessHeap(), 0, DevInstData->CustomSearchPath);
485  DevInstData->CustomSearchPath = Buffer = HeapAlloc(
486  GetProcessHeap(),
487  0,
488  (LengthNeeded + 1) * sizeof(WCHAR));
489  if (!Buffer)
490  {
491  TRACE("HeapAlloc() failed\n");
493  return FALSE;
494  }
495 
496  /* Fill search paths */
497  if (IncludeRemovableDevices)
498  {
499  for (drive[0] = 'A', i = 1; drive[0] <= 'Z'; drive[0]++, i <<= 1)
500  {
501  if (dwDrives & i)
502  {
503  nType = GetDriveTypeW(drive);
504  if (nType == DRIVE_REMOVABLE || nType == DRIVE_CDROM)
505  {
506  Buffer += 1 + swprintf(Buffer, drive);
507  }
508  }
509  }
510  }
511  if (IncludeCustomPath)
512  {
513  Buffer += 1 + GetWindowTextW(hwndCombo, Buffer, CustomTextLength);
514  }
515  *Buffer = '\0';
516 
517  return TRUE;
518 }
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
#define TRUE
Definition: types.h:120
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define ComboBox_GetTextLength(hwndCtl)
Definition: windowsx.h:34
#define DRIVE_REMOVABLE
Definition: winbase.h:248
#define DRIVE_CDROM
Definition: machpc98.h:115
#define FALSE
Definition: types.h:117
Definition: bufpool.h:45
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:611
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
Definition: disk.c:497
int _cdecl swprintf(const WCHAR *,...)
DWORD WINAPI GetLogicalDrives(VOID)
Definition: disk.c:110
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
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1412
unsigned int UINT
Definition: ndis.h:50
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION _In_ ULONG _Out_opt_ PULONG LengthNeeded
Definition: fltkernel.h:1342
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:594

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

◆ ScanFoldersForDriver()

BOOL ScanFoldersForDriver ( IN PDEVINSTDATA  DevInstData)

Definition at line 412 of file newdev.c.

414 {
415  BOOL result;
416 
417  /* Search in default location */
418  result = SearchDriver(DevInstData, NULL, NULL);
419 
420  if (DevInstData->CustomSearchPath)
421  {
422  /* Search only in specified paths */
423  /* We need to check all specified directories to be
424  * sure to find the best driver for the device.
425  */
426  LPCWSTR Path;
427  for (Path = DevInstData->CustomSearchPath; *Path != '\0'; Path += wcslen(Path) + 1)
428  {
429  TRACE("Search driver in %s\n", debugstr_w(Path));
430  if (wcslen(Path) == 2 && Path[1] == ':')
431  {
432  if (SearchDriverRecursive(DevInstData, Path))
433  result = TRUE;
434  }
435  else
436  {
437  if (SearchDriver(DevInstData, Path, NULL))
438  result = TRUE;
439  }
440  }
441  }
442 
443  return result;
444 }
static BOOL SearchDriverRecursive(IN PDEVINSTDATA DevInstData, IN LPCWSTR Path)
Definition: newdev.c:342
GLuint64EXT * result
Definition: glext.h:11304
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define TRUE
Definition: types.h:120
static BOOL SearchDriver(IN PDEVINSTDATA DevInstData, IN LPCWSTR Directory OPTIONAL, IN LPCWSTR InfFile OPTIONAL)
Definition: newdev.c:252
unsigned int BOOL
Definition: ntddk_ex.h:94
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
PRTL_UNICODE_STRING_BUFFER Path
#define NULL
Definition: types.h:112
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)

Referenced by DevInstallW(), and FindDriverProc().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( newdev  )

Variable Documentation

◆ hDllInstance

HINSTANCE hDllInstance

Definition at line 17 of file browser.c.