windows-nt/Source/XPSP1/NT/base/ntsetup/textmode/inc/setupdd.h

207 lines
4.2 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1993 Microsoft Corporation
Module Name:
setupdd.h
Abstract:
Public header file for setup device driver.
Author:
Ted Miller (tedm) 11-August-1993
Revision History:
--*/
#ifndef _SETUPDD_
#define _SETUPDD_
#define DD_SETUP_DEVICE_NAME_U L"\\Device\\Setup"
#define IOCTL_SETUP_START CTL_CODE(FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SETUP_FMIFS_MESSAGE CTL_CODE(FILE_DEVICE_UNKNOWN,1,METHOD_BUFFERED,FILE_ANY_ACCESS)
typedef struct _SETUP_COMMUNICATION {
union {
ULONG RequestNumber;
NTSTATUS Status;
DWORD_PTR UnusedAlign64;
} u;
UCHAR Buffer[2048];
} SETUP_COMMUNICATION, *PSETUP_COMMUNICATION;
//
// Input structure for IOCTL_SETUP_START.
//
typedef struct _SETUP_START_INFO {
//
// Handles of events used for communication between
// device driver and user-mode parts of text setup.
//
HANDLE RequestReadyEvent;
HANDLE RequestServicedEvent;
//
// Base address of the user-mode process.
// This is used by the device driver to load massages
// from the user-mode process' resource tables.
//
PVOID UserModeImageBase;
//
// System information structure.
//
SYSTEM_BASIC_INFORMATION SystemBasicInfo;
//
// Address of a buffer in the user process' address space,
// to be used for same communication.
//
PSETUP_COMMUNICATION Communication;
} SETUP_START_INFO, *PSETUP_START_INFO;
//
// Input structure for IOCTL_SETUP_FMIFS_MESSAGE
//
typedef struct _SETUP_DISPLAY_INFO {
FMIFS_PACKET_TYPE FmifsPacketType;
PVOID FmifsPacket;
} SETUP_FMIFS_MESSAGE, *PSETUP_FMIFS_MESSAGE;
typedef enum {
SetupServiceDone,
SetupServiceExecute,
SetupServiceQueryDirectoryObject,
SetupServiceFlushVirtualMemory,
SetupServiceShutdownSystem,
SetupServiceDeleteKey,
SetupServiceLoadKbdLayoutDll,
SetupServiceLockVolume,
SetupServiceUnlockVolume,
SetupServiceDismountVolume,
SetupServiceSetDefaultFileSecurity,
SetupServiceVerifyFileAccess,
SetupServiceCreatePageFile,
SetupServiceGetFullPathName,
SetupServiceMax
};
typedef struct _SERVICE_EXECUTE {
PWSTR FullImagePath;
PWSTR CommandLine;
ULONG ReturnStatus;
//
// The two nul-terminated strings follow in the buffer.
//
WCHAR Buffer[1];
} SERVICE_EXECUTE, *PSERVICE_EXECUTE;
typedef struct _SERVICE_DELETE_KEY {
HANDLE KeyRootDirectory;
PWSTR Key;
//
// The nul-terminated string follows in the buffer.
//
WCHAR Buffer[1];
} SERVICE_DELETE_KEY, *PSERVICE_DELETE_KEY;
typedef struct _SERVICE_QUERY_DIRECTORY_OBJECT {
HANDLE DirectoryHandle;
ULONG Context;
BOOLEAN RestartScan;
//
// Make sure this fits within the Buffer field of SETUP_COMMUNICATION.
// It's an arroy of ULONGs to force alignment.
//
ULONG Buffer[256];
} SERVICE_QUERY_DIRECTORY_OBJECT, *PSERVICE_QUERY_DIRECTORY_OBJECT;
typedef struct _SERVICE_FLUSH_VIRTUAL_MEMORY {
IN PVOID BaseAddress;
IN SIZE_T RangeLength;
} SERVICE_FLUSH_VIRTUAL_MEMORY, *PSERVICE_FLUSH_VIRTUAL_MEMORY;
typedef struct _SERVICE_LOAD_KBD_LAYOUT_DLL {
PVOID TableAddress;
WCHAR DllName[1];
} SERVICE_LOAD_KBD_LAYOUT_DLL, *PSERVICE_LOAD_KBD_LAYOUT_DLL;
typedef struct _SERVICE_LOCK_UNLOCK_VOLUME {
HANDLE Handle;
} SERVICE_LOCK_UNLOCK_VOLUME, *PSERVICE_LOCK_UNLOCK_VOLUME;
typedef struct _SERVICE_DISMOUNT_VOLUME {
HANDLE Handle;
} SERVICE_LOCK_DISMOUNT_VOLUME, *PSERVICE_DISMOUNT_VOLUME;
typedef struct _SERVICE_VERIFY_FILE_ACESS {
ACCESS_MASK DesiredAccess;
WCHAR FileName[1];
} SERVICE_VERIFY_FILE_ACCESS, *PSERVICE_VERIFY_FILE_ACCESS;
typedef struct _SERVICE_DEFAULT_FILE_SECURITY {
WCHAR FileName[1];
} SERVICE_DEFAULT_FILE_SECURITY, *PSERVICE_DEFAULT_FILE_SECURITY;
typedef struct _SERVICE_CREATE_PAGEFILE {
LARGE_INTEGER MinSize;
LARGE_INTEGER MaxSize;
WCHAR FileName[1];
} SERVICE_CREATE_PAGEFILE, *PSERVICE_CREATE_PAGEFILE;
typedef struct _SERVICE_GETFULLPATHNAME {
WCHAR *NameOut;
WCHAR FileName[1];
} SERVICE_GETFULLPATHNAME, *PSERVICE_GETFULLPATHNAME;
#endif // ndef _SETUPDD_