ReactOS  0.4.14-dev-49-gfb4591c
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 1298 of file wizard.c.

1302 {
1303  PROPSHEETHEADER psh;
1304  HPROPSHEETPAGE ahpsp[IDD_MAXIMUMPAGE + 1];
1305  PROPSHEETPAGE psp;
1306 
1307  /* zero based index */
1308  startPage -= IDD_FIRSTPAGE;
1309 
1310  /* Create the Welcome page */
1311  ZeroMemory(&psp, sizeof(PROPSHEETPAGE));
1312  psp.dwSize = sizeof(PROPSHEETPAGE);
1313  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1314  psp.hInstance = hDllInstance;
1315  psp.lParam = (LPARAM)DevInstData;
1316  psp.pszTitle = MAKEINTRESOURCE(DevInstData->bUpdate ? IDS_UPDATEWIZARDTITLE : IDS_INSTALLWIZARDTITLE);
1317  psp.pfnDlgProc = WelcomeDlgProc;
1318  psp.pszTemplate = MAKEINTRESOURCE(IDD_WELCOMEPAGE);
1320 
1321  /* Create the Select Source page */
1322  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1323  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_CHSOURCE_TITLE);
1324  psp.pfnDlgProc = CHSourceDlgProc;
1325  psp.pszTemplate = MAKEINTRESOURCE(IDD_CHSOURCE);
1327 
1328  /* Create the Search driver page */
1329  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1330  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_SEARCHDRV_TITLE);
1331  psp.pfnDlgProc = SearchDrvDlgProc;
1332  psp.pszTemplate = MAKEINTRESOURCE(IDD_SEARCHDRV);
1334 
1335  /* Create the Install driver page */
1336  psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USETITLE;
1337  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_INSTALLDRV_TITLE);
1338  psp.pfnDlgProc = InstallDrvDlgProc;
1339  psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLDRV);
1341 
1342  /* Create the No driver page */
1343  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1344  psp.pfnDlgProc = NoDriverDlgProc;
1345  psp.pszTemplate = MAKEINTRESOURCE(IDD_NODRIVER);
1347 
1348  /* Create the Install failed page */
1349  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1350  psp.pfnDlgProc = InstallFailedDlgProc;
1351  psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLFAILED);
1353 
1354  /* Create the Need reboot page */
1355  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1356  psp.pfnDlgProc = NeedRebootDlgProc;
1357  psp.pszTemplate = MAKEINTRESOURCE(IDD_NEEDREBOOT);
1359 
1360  /* Create the Finish page */
1361  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER | PSP_USETITLE;
1362  psp.pfnDlgProc = FinishDlgProc;
1363  psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE);
1365 
1366  /* Create the property sheet */
1367  psh.dwSize = sizeof(PROPSHEETHEADER);
1368  psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER;
1369  psh.hInstance = hDllInstance;
1370  psh.hwndParent = hwndParent;
1371  psh.nPages = IDD_MAXIMUMPAGE + 1;
1372  psh.nStartPage = startPage;
1373  psh.phpage = ahpsp;
1374  psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
1375  psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER);
1376 
1377  /* Create title font */
1378  DevInstData->hTitleFont = CreateTitleFont();
1379 
1380  /* Display the wizard */
1381  PropertySheet(&psh);
1382 
1383  DeleteObject(DevInstData->hTitleFont);
1384 
1385  return TRUE;
1386 }
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define IDD_INSTALLDRV
Definition: resource.h:24
#define TRUE
Definition: types.h:120
static INT_PTR CALLBACK InstallDrvDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:804
#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:1635
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:915
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:374
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:709
#define IDD_WELCOMEPAGE
Definition: resource.h:21
#define CreatePropertySheetPage
Definition: prsht.h:381
static HINSTANCE hDllInstance
Definition: clb.c:30
#define PSP_DEFAULT
Definition: prsht.h:22
static INT_PTR CALLBACK InstallFailedDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1036
static HFONT CreateTitleFont(VOID)
Definition: wizard.c:1273
static INT_PTR CALLBACK NeedRebootDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:1115
#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
#define IDB_WATERMARK
Definition: resource.h:4
#define PropertySheet
Definition: prsht.h:382
static INT_PTR CALLBACK WelcomeDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:450
static INT_PTR CALLBACK CHSourceDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: wizard.c:561
#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:1194
#define PROPSHEETPAGE
Definition: prsht.h:371

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:1059
#define DIF_NEWDEVICEWIZARD_PREANALYZE
Definition: setupapi.h:147
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4029
#define DIF_NEWDEVICEWIZARD_POSTANALYZE
Definition: setupapi.h:148
#define DIF_DESTROYPRIVATEDATA
Definition: setupapi.h:131
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 }
#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
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
Definition: bufpool.h:45
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define swprintf(buf, format,...)
Definition: sprintf.c:56
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:409
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
Definition: disk.c:497
DWORD WINAPI GetLogicalDrives(VOID)
Definition: disk.c:110
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1408
#define DRIVE_CDROM
Definition: winbase.h:251
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
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
#define HeapFree(x, y, z)
Definition: compat.h:394

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
#define TRUE
Definition: types.h:120
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
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
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
PRTL_UNICODE_STRING_BUFFER Path
GLuint64EXT * result
Definition: glext.h:11304
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 netlogon.c.