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.
 
 
 
 
 
 

230 lines
5.1 KiB

//
// Headless communication constants and structures.
//
#define VTUTF8_CLEAR_SCREEN L"\033[2J\033[0;0H"
#define MY_MAX_STRING_LENGTH (256)
typedef struct _UserInputParams {
EMSVTUTF8Channel* Channel; // headless channel object
HANDLE hInputCompleteEvent; //signals that the user is done.
HANDLE hRemoveUI; //signals that we should abort.
} UserInputParams, *PUserInputParams;
typedef BOOL ( STDAPICALLTYPE *SETUPPIDGENW )(
LPWSTR lpstrSecureCdKey, // [IN] 25-character Secure CD-Key (gets U-Cased)
LPCWSTR lpstrMpc, // [IN] 5-character Microsoft Product Code
LPCWSTR lpstrSku, // [IN] Stock Keeping Unit (formatted like 123-12345)
BOOL fOem, // [IN] is this an OEM install?
LPWSTR lpstrPid2, // [OUT] PID 2.0, pass in ptr to 24 character array
LPBYTE lpbDigPid, // [IN/OUT] pointer to DigitalPID buffer. First DWORD is the length
LPBOOL pfCCP); // [OUT] optional ptr to Compliance Checking flag (can be NULL)
DEFINE_GUID(
SAC_CHANNEL_GUI_SETUP_PROMPT, /* 77320899-e37c-41bc-8cbc-840920e12b60 */
0x77320899,0xe37c,0x41bc,0x8c, 0xbc, 0x84, 0x09, 0x20, 0xe1, 0x2b, 0x60);
//
// PID presentation constants.
//
#define MAX_PID30_SITE (3)
#define MAX_PID30_RPC (5)
#define SETUP_TYPE_BUFFER_LEN (8)
//
// EULA presentation constants.
//
#define EULA_LINES_PER_SCREEN (15)
//
// EMS communication function prototypes.
//
BOOL
IsHeadlessPresent(
OUT EMSVTUTF8Channel **Channel
);
BOOL
InitializeGlobalChannelAttributes(
PSAC_CHANNEL_OPEN_ATTRIBUTES ChannelAttributes
);
BOOL
WaitForUserInputFromEMS(
IN DWORD TimeOut,
OUT BOOL *TimedOut, OPTIONAL
IN HANDLE hCancelEvent OPTIONAL
);
BOOL
ReadCharFromEMS(
OUT PWCHAR awc,
IN HANDLE hCancelEvent OPTIONAL
);
BOOL
GetStringFromEMS(
OUT PWSTR String,
IN ULONG BufferSize,
IN BOOL GetAllChars,
IN BOOL EchoClearText,
IN HANDLE hCancelEvent OPTIONAL
);
VOID
ClearEMSScreen();
BOOL
GetDecodedKeyPressFromEMS(
OUT PULONG KeyPress,
IN HANDLE hCancelEvent OPTIONAL
);
#define ASCI_ETX 3 // control-C
#define ASCI_BS 8
#define ASCI_NL 10
#define ASCI_C 67
#define ASCI_LOWER_C 99
#define ASCI_CR 13
#define ASCI_ESC 27
//
// Character codes are passed around as ULONGs within setup.
// The low word is a Unicode character value; the high word
// is used for various other keypresses.
//
#define KEY_PAGEUP 0x00010000
#define KEY_PAGEDOWN 0x00020000
#define KEY_UP 0x00030000
#define KEY_DOWN 0x00040000
#define KEY_LEFT 0x00050000
#define KEY_RIGHT 0x00060000
#define KEY_HOME 0x00070000
#define KEY_END 0x00080000
#define KEY_INSERT 0x00090000
#define KEY_DELETE 0x000a0000
#define KEY_F1 0x00110000
#define KEY_F2 0x00120000
#define KEY_F3 0x00130000
#define KEY_F4 0x00140000
#define KEY_F5 0x00150000
#define KEY_F6 0x00160000
#define KEY_F7 0x00170000
#define KEY_F8 0x00180000
#define KEY_F9 0x00190000
#define KEY_F10 0x001a0000
#define KEY_F11 0x001b0000
#define KEY_F12 0x001c0000
//
// PID function prototypes.
//
BOOL
InitializePidVariables(
);
BOOL
ValidatePidEx(
LPTSTR PID,
BOOL *pbStepup,
BOOL *bSelect
);
BOOL
ValidatePid30(
LPTSTR aPID
);
BOOL
ValidatePid30Assemble(
LPTSTR Edit1,
LPTSTR Edit2,
LPTSTR Edit3,
LPTSTR Edit4,
LPTSTR Edit5
);
BOOL
GetPid(
IN PWSTR PidString,
IN ULONG BufferSize,
IN HANDLE hCancelEvent
);
//
// EULA function prototypes
//
BOOL
PresentEula(
HANDLE hCancelEvent
);
//
// Core Functionality
//
INT_PTR CALLBACK
UserInputAbortProc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
DWORD
PromptForUserInputThreadOverHeadlessConnection(
PVOID params
);
DWORD
PromptForUserInputThreadViaLocalDialog(
PVOID params
);
BOOL
LoadStringResource(
PUNICODE_STRING pUnicodeString,
INT MsgId
);
BOOL
WriteResourceMessage(
ULONG MessageID
);
BOOL
PromptForPassword(
IN PWSTR Password,
IN ULONG BufferSize,
IN HANDLE hCancelEvent
);
DWORD
ProcessUnattendFile(
BOOL FixUnattendFile,
PBOOL ProcessingRequired, OPTIONAL
PHANDLE hCancelEvent OPTIONAL
);
extern "C"
BOOL
CheckEMS(
IN int argc,
WCHAR *argvW[]
);