Source code of Windows XP (NT5)
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.
|
|
/*++
Copyright (c) 1990-1994 Microsoft Corporation All rights reserved
Module Name:
SplInit.c
Abstract:
Initialize the spooler.
Author:
Environment:
User Mode -Win32
Revision History:
--*/
#include "precomp.h"
#pragma hdrstop
#include "client.h"
DWORD TranslateExceptionCode( DWORD ExceptionCode);
BOOL SpoolerInit( VOID)
/*++
Routine Description:
Arguments:
Return Value:
--*/
{ WCHAR szDefaultPrinter[MAX_PATH * 2]; HKEY hKeyPrinters; DWORD ReturnValue;
//
// Preserve the old device= string in case we can't initialize and
// must defer.
//
if (!RegOpenKeyEx(HKEY_CURRENT_USER, szPrinters, 0, KEY_WRITE|KEY_READ, &hKeyPrinters)) {
//
// Attempt to retrieve the current default written out.
//
if (GetProfileString(szWindows, szDevice, szNULL, szDefaultPrinter, COUNTOF(szDefaultPrinter))) {
//
// If it exists, save it away in case we start later when
// the spooler hasn't started (which means we clear device=)
// and then restart the spooler and login.
//
RegSetValueEx(hKeyPrinters, szDeviceOld, 0, REG_SZ, (PBYTE)szDefaultPrinter, (wcslen(szDefaultPrinter)+1) * sizeof(szDefaultPrinter[0]));
}
RegCloseKey(hKeyPrinters); }
//
// Clear out [devices] and [printerports] device=
//
WriteProfileString(szDevices, NULL, NULL); WriteProfileString(szPrinterPorts, NULL, NULL); WriteProfileString(szWindows, szDevice, NULL);
RpcTryExcept {
if (ReturnValue = RpcSpoolerInit((LPWSTR)szNULL)) {
SetLastError(ReturnValue); ReturnValue = FALSE;
} else {
ReturnValue = TRUE; }
} RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) {
SetLastError(TranslateExceptionCode(RpcExceptionCode())); ReturnValue = FALSE;
} RpcEndExcept
return ReturnValue; }
|