windows-nt/Source/XPSP1/NT/net/dhcp/server/binl/osc.h

574 lines
8.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
osc.h
Abstract:
This file containes definitions for the OS chooser server part.
Author:
Adam Barr (adamba) 08-Jul-1997
Environment:
User Mode - Win32 - MIDL
Revision History:
--*/
#ifndef _OSCSERVER_
#define _OSCSERVER_
//
// Functions in osc.c.
//
DWORD
OscInitialize(
VOID
);
VOID
OscUninitialize(
VOID
);
DWORD
OscProcessMessage(
LPBINL_REQUEST_CONTEXT RequestContext
);
DWORD
OscVerifyLastResponseSize(
PCLIENT_STATE clientState
);
DWORD
OscProcessNegotiate(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState
);
DWORD
OscProcessAuthenticate(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState
);
DWORD
OscProcessScreenArguments(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState,
PUCHAR *NameLoc
);
DWORD
OscProcessRequestUnsigned(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState
);
OscInstallClient(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState,
PCREATE_DATA createData
);
DWORD
OscGetCreateData(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState,
PCREATE_DATA CreateData
);
DWORD
OscProcessRequestSigned(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState
);
DWORD
OscProcessSetupRequest(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState
);
DWORD
OscProcessLogoff(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState
);
DWORD
OscProcessNetcardRequest(
LPBINL_REQUEST_CONTEXT RequestContext
);
DWORD
OscProcessHalRequest(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState
);
DWORD
OscProcessSifFile(
PCLIENT_STATE clientState,
LPWSTR TemplateFile,
LPWSTR WinntSifPath
);
DWORD
OscSetupClient(
PCLIENT_STATE clientState,
BOOLEAN ErrorDuplicateName
);
VOID
OscUndoSetupClient(
PCLIENT_STATE clientState
);
USHORT
OscPlatformToArchitecture(
PCLIENT_STATE clientState
);
//
// client.c
//
DWORD
OscUpdatePassword(
IN PCLIENT_STATE ClientState,
IN PWCHAR SamAccountName,
IN PWCHAR Password,
IN LDAP * LdapHandle,
IN PLDAPMessage LdapMessage
);
VOID
FreeClient(
PCLIENT_STATE client
);
VOID
OscFreeClientVariables(
PCLIENT_STATE clientState
);
BOOLEAN
OscInitializeClientVariables(
PCLIENT_STATE clientState
);
DWORD
OscFindClient(
ULONG RemoteIp,
BOOL Remove,
PCLIENT_STATE * pClientState
);
VOID
OscFreeClients(
VOID
);
VOID
SearchAndReplace(
LPSAR psarList,
LPSTR *pszString,
DWORD ArraySize,
DWORD dwSize,
DWORD dwExtraSize
);
VOID
ProcessUniqueUdb(
LPSTR *pszString,
DWORD dwSize,
LPWSTR UniqueUdbPath,
LPWSTR UniqueUdbId
);
LPSTR
OscFindVariableA(
PCLIENT_STATE clientState,
LPSTR variableName
);
LPWSTR
OscFindVariableW(
PCLIENT_STATE clientState,
LPSTR variableName
);
BOOLEAN
OscCheckVariableLength(
PCLIENT_STATE clientState,
LPSTR variableName,
ULONG variableLength
);
DWORD
OscAddVariableA(
PCLIENT_STATE clientState,
LPSTR variableName,
LPSTR variableValue
);
DWORD
OscAddVariableW(
PCLIENT_STATE clientState,
LPSTR variableName,
LPWSTR variableValue
);
VOID
OscResetVariable(
PCLIENT_STATE clientState,
LPSTR variableName
);
//
// ds.c
//
DWORD
OscGetUserDetails (
PCLIENT_STATE clientState
);
DWORD
OscCreateAccount(
PCLIENT_STATE clientState,
PCREATE_DATA CreateData
);
DWORD
CheckForDuplicateMachineName(
PCLIENT_STATE clientState,
LPWSTR pszMachineName
);
DWORD
GenerateMachineName(
PCLIENT_STATE clientState
);
DWORD
OscCheckMachineDN(
PCLIENT_STATE clientState
);
DWORD
OscGetDefaultContainerForDomain (
PCLIENT_STATE clientState,
PWCHAR DomainDN
);
//
// menu.c
//
DWORD
OscAppendTemplatesMenus(
PCHAR *GeneratedScreen,
PDWORD dwGeneratedSize,
PCHAR DirToEnum,
PCLIENT_STATE clientState,
BOOLEAN RecoveryOptionsOnly
);
DWORD
SearchAndGenerateOSMenu(
PCHAR *GeneratedScreen,
PDWORD dwGeneratedSize,
PCHAR DirToEnum,
PCLIENT_STATE clientState
);
DWORD
FilterFormOptions(
PCHAR OutMessage,
PCHAR FilterStart,
PULONG OutMessageLength,
PCHAR SectionName,
PCLIENT_STATE ClientState
);
//
// utils.c
//
void
OscCreateWin32SubError(
PCLIENT_STATE clientState,
DWORD Error
);
void
OscCreateLDAPSubError(
PCLIENT_STATE clientState,
DWORD Error
);
VOID
OscGenerateSeed(
UCHAR Seed[1]
);
DWORD
OscRunEncode(
IN PCLIENT_STATE ClientState,
IN LPSTR Data,
OUT LPSTR * EncodedData
);
DWORD
OscRunDecode(
IN PCLIENT_STATE ClientState,
IN LPSTR EncodedData,
OUT LPSTR * Data
);
BOOLEAN
OscGenerateRandomBits(
PUCHAR Buffer,
ULONG BufferLen
);
VOID
OscGeneratePassword(
OUT PWCHAR Password,
OUT PULONG PasswordLength
);
DWORD
GenerateErrorScreen(
PCHAR *OutMessage,
PULONG OutMessageLength,
DWORD Error,
PCLIENT_STATE clientState
);
PCHAR
FindNext(
PCHAR Start,
CHAR ch,
PCHAR End
);
PCHAR
FindScreenName(
PCHAR Screen
);
DWORD
OscImpersonate(
PCLIENT_STATE ClientState
);
DWORD
OscRevert(
PCLIENT_STATE ClientState
);
DWORD
OscGuidToBytes(
LPSTR pszGuid,
LPBYTE Guid
);
BOOLEAN
OscSifIsSysPrep(
PWCHAR pSysPrepSifPath
);
BOOLEAN
OscSifIsCmdConsA(
PCHAR pSysPrepSifPath
);
BOOLEAN
OscSifIsASR(
PCHAR pSysPrepSifPath
);
BOOLEAN
OscGetClosestNt(
IN LPWSTR PathToKernel,
IN DWORD SkuType,
IN PCLIENT_STATE ClientState,
OUT LPWSTR SetupPath,
OUT PBOOLEAN ExactMatch
);
BOOLEAN
OscGetNtVersionInfo(
PULONGLONG Version,
PWCHAR SearchDir,
PCLIENT_STATE ClientState
);
DWORD
SendUdpMessage(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState,
BOOL bFragment,
BOOL bResend
);
DWORD
OscVerifySignature(
PCLIENT_STATE clientState,
SIGNED_PACKET UNALIGNED * signedMessage
);
DWORD
OscSendSignedMessage(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState,
PCHAR Message,
ULONG MessageLength
);
DWORD
OscSendUnsignedMessage(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState,
PCHAR Message,
ULONG MessageLength
);
DWORD
OscSendSetupMessage(
LPBINL_REQUEST_CONTEXT RequestContext,
PCLIENT_STATE clientState,
ULONG RequestType,
PCHAR Message,
ULONG MessageLength
);
DWORD
OscConstructSecret(
PCLIENT_STATE clientState,
PWCHAR UnicodePassword,
ULONG UnicodePasswordLength,
PCREATE_DATA CreateData
);
#if defined(SET_ACLS_ON_CLIENT_DIRS)
DWORD
OscSetClientDirectoryPermissions(
PCLIENT_STATE clientState
);
#endif
#if 0
VOID
OscGetFlipServerList(
PUCHAR FlipServerList,
PULONG FlipServerListLength
);
#endif
#if defined(REMOTE_BOOT)
DWORD
OscCopyTemplateFiles(
LPWSTR SourcePath,
LPWSTR ImagePath,
LPWSTR TemplateFile
);
#endif // defined(REMOTE_BOOT)
#if DBG && defined(REMOTE_BOOT)
DWORD
OscCreateNullFile(
LPWSTR Image,
LPWSTR MAC
);
#endif // DBG && defined(REMOTE_BOOT)
DWORD
OscSetupMachinePassword(
PCLIENT_STATE clientState,
PCWSTR SifFile
);
DWORD
MyGetDcHandle(
PCLIENT_STATE clientState,
PCSTR DomainName,
PHANDLE Handle
);
DWORD
GetDomainNetBIOSName(
IN PCWSTR DomainNameInAnyFormat,
OUT PWSTR *NetBIOSName
);
//
// OSC packet definitions.
//
#define OSC_REQUEST 0x81
//
// Miscellaneous definitions.
//
#define DESCRIPTION_SIZE 70 // 70 cols
#define HELPLINES_SIZE 4 * 70 // 4 lines of text
#define OSCHOOSER_SIF_SECTIONA "OSChooser"
#define OSCHOOSER_SIF_SECTIONW L"OSChooser"
#define COMPUTER_DEFAULT_CONTAINER_IN_B32_FORM L"B:32:AA312825768811D1ADED00C04FD8D5CD:"
//
// Default "default screen" (the first one sent down) if none is specified
// in the registry. Note that this is the actual filename, not the NAME
// value within it.
//
#define DEFAULT_SCREEN_NAME L"welcome.osc"
//
// This defines the size by which the generated screen buffers will grow.
//
#define GENERATED_SCREEN_GROW_SIZE 512
//
// Make English default
//
#define DEFAULT_LANGUAGE L"English"
//
// Default value for %ORGNAME%
//
#define DEFAULT_ORGNAME L""
//
// Default value for %TIMEZONE% (GMT)
//
#define DEFAULT_TIMEZONE L"085"
//
// Name of the tmp directory we create below the REMINST share.
//
#define TEMP_DIRECTORY L"tmp"
#endif