/*++ 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_WRITE_ACCESS) #define IOCTL_SETUP_FMIFS_MESSAGE CTL_CODE(FILE_DEVICE_UNKNOWN,1,METHOD_BUFFERED,FILE_WRITE_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_