Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//*********************************************************************
//* Microsoft Windows **
//* Copyright (c) 1994-1998 Microsoft Corporation
//*********************************************************************
//
// CALLOUT.C - Functions to call out to external components to install
// devices
//
// HISTORY:
//
// 11/27/94 jeremys Created.
// 96/03/24 markdu Replaced memset with ZeroMemory for consistency.
//
#include "wizard.h"
// global variables
static const char c_szModemCPL[] = "rundll32.exe Shell32.dll,Control_RunDLL modem.cpl,,add";
/*******************************************************************
NAME: InvokeModemWizard
SYNOPSIS: Starts the modem install wizard
ENTRY: hwndToHide - this window, if non-NULL, will be hidden while the modem CPL runs
EXIT: ERROR_SUCCESS if successful, or a standard error code
NOTES: launches RUNDLL32 as a process to run the modem wizard. Blocks on the completion of that process before returning.
hwndToHide is not necessarily the calling window! For instance, in a property sheet hwndToHide should not be the dialog (hDlg), but GetParent(hDlg) so that we hide the property sheet itself instead of just the current page.
********************************************************************/ UINT InvokeModemWizard(HWND hwndToHide) { BOOL bSleepNeeded = FALSE;
if (TRUE == IsNT()) { BOOL bNeedsStart; //
// Call into icfg32 dll
//
if (NULL != lpIcfgInstallModem) { lpIcfgInstallModem(hwndToHide, 0L, &bNeedsStart); return ERROR_SUCCESS; } else return ERROR_GEN_FAILURE;
} else { PROCESS_INFORMATION pi; BOOL fRet; STARTUPINFO sti; UINT err = ERROR_SUCCESS; CHAR szWindowTitle[255];
ZeroMemory(&sti,sizeof(STARTUPINFO)); sti.cb = sizeof(STARTUPINFO);
// run the modem wizard
fRet = CreateProcess(NULL, (LPSTR)c_szModemCPL, NULL, NULL, FALSE, 0, NULL, NULL, &sti, &pi); if (fRet) { CloseHandle(pi.hThread);
// wait for the modem wizard process to complete
MsgWaitForMultipleObjectsLoop(pi.hProcess); CloseHandle(pi.hProcess); } else err = GetLastError();
// show the parent window again
if (hwndToHide) { ShowWindow(hwndToHide,SW_SHOW); }
return err; } }
|