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.

206 lines
4.2 KiB

  1. /*++
  2. Copyright (c) 1993 Microsoft Corporation
  3. Module Name:
  4. setupdd.h
  5. Abstract:
  6. Public header file for setup device driver.
  7. Author:
  8. Ted Miller (tedm) 11-August-1993
  9. Revision History:
  10. --*/
  11. #ifndef _SETUPDD_
  12. #define _SETUPDD_
  13. #define DD_SETUP_DEVICE_NAME_U L"\\Device\\Setup"
  14. #define IOCTL_SETUP_START CTL_CODE(FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)
  15. #define IOCTL_SETUP_FMIFS_MESSAGE CTL_CODE(FILE_DEVICE_UNKNOWN,1,METHOD_BUFFERED,FILE_ANY_ACCESS)
  16. typedef struct _SETUP_COMMUNICATION {
  17. union {
  18. ULONG RequestNumber;
  19. NTSTATUS Status;
  20. DWORD_PTR UnusedAlign64;
  21. } u;
  22. UCHAR Buffer[2048];
  23. } SETUP_COMMUNICATION, *PSETUP_COMMUNICATION;
  24. //
  25. // Input structure for IOCTL_SETUP_START.
  26. //
  27. typedef struct _SETUP_START_INFO {
  28. //
  29. // Handles of events used for communication between
  30. // device driver and user-mode parts of text setup.
  31. //
  32. HANDLE RequestReadyEvent;
  33. HANDLE RequestServicedEvent;
  34. //
  35. // Base address of the user-mode process.
  36. // This is used by the device driver to load massages
  37. // from the user-mode process' resource tables.
  38. //
  39. PVOID UserModeImageBase;
  40. //
  41. // System information structure.
  42. //
  43. SYSTEM_BASIC_INFORMATION SystemBasicInfo;
  44. //
  45. // Address of a buffer in the user process' address space,
  46. // to be used for same communication.
  47. //
  48. PSETUP_COMMUNICATION Communication;
  49. } SETUP_START_INFO, *PSETUP_START_INFO;
  50. //
  51. // Input structure for IOCTL_SETUP_FMIFS_MESSAGE
  52. //
  53. typedef struct _SETUP_DISPLAY_INFO {
  54. FMIFS_PACKET_TYPE FmifsPacketType;
  55. PVOID FmifsPacket;
  56. } SETUP_FMIFS_MESSAGE, *PSETUP_FMIFS_MESSAGE;
  57. typedef enum {
  58. SetupServiceDone,
  59. SetupServiceExecute,
  60. SetupServiceQueryDirectoryObject,
  61. SetupServiceFlushVirtualMemory,
  62. SetupServiceShutdownSystem,
  63. SetupServiceDeleteKey,
  64. SetupServiceLoadKbdLayoutDll,
  65. SetupServiceLockVolume,
  66. SetupServiceUnlockVolume,
  67. SetupServiceDismountVolume,
  68. SetupServiceSetDefaultFileSecurity,
  69. SetupServiceVerifyFileAccess,
  70. SetupServiceCreatePageFile,
  71. SetupServiceGetFullPathName,
  72. SetupServiceMax
  73. };
  74. typedef struct _SERVICE_EXECUTE {
  75. PWSTR FullImagePath;
  76. PWSTR CommandLine;
  77. ULONG ReturnStatus;
  78. //
  79. // The two nul-terminated strings follow in the buffer.
  80. //
  81. WCHAR Buffer[1];
  82. } SERVICE_EXECUTE, *PSERVICE_EXECUTE;
  83. typedef struct _SERVICE_DELETE_KEY {
  84. HANDLE KeyRootDirectory;
  85. PWSTR Key;
  86. //
  87. // The nul-terminated string follows in the buffer.
  88. //
  89. WCHAR Buffer[1];
  90. } SERVICE_DELETE_KEY, *PSERVICE_DELETE_KEY;
  91. typedef struct _SERVICE_QUERY_DIRECTORY_OBJECT {
  92. HANDLE DirectoryHandle;
  93. ULONG Context;
  94. BOOLEAN RestartScan;
  95. //
  96. // Make sure this fits within the Buffer field of SETUP_COMMUNICATION.
  97. // It's an arroy of ULONGs to force alignment.
  98. //
  99. ULONG Buffer[256];
  100. } SERVICE_QUERY_DIRECTORY_OBJECT, *PSERVICE_QUERY_DIRECTORY_OBJECT;
  101. typedef struct _SERVICE_FLUSH_VIRTUAL_MEMORY {
  102. IN PVOID BaseAddress;
  103. IN SIZE_T RangeLength;
  104. } SERVICE_FLUSH_VIRTUAL_MEMORY, *PSERVICE_FLUSH_VIRTUAL_MEMORY;
  105. typedef struct _SERVICE_LOAD_KBD_LAYOUT_DLL {
  106. PVOID TableAddress;
  107. WCHAR DllName[1];
  108. } SERVICE_LOAD_KBD_LAYOUT_DLL, *PSERVICE_LOAD_KBD_LAYOUT_DLL;
  109. typedef struct _SERVICE_LOCK_UNLOCK_VOLUME {
  110. HANDLE Handle;
  111. } SERVICE_LOCK_UNLOCK_VOLUME, *PSERVICE_LOCK_UNLOCK_VOLUME;
  112. typedef struct _SERVICE_DISMOUNT_VOLUME {
  113. HANDLE Handle;
  114. } SERVICE_LOCK_DISMOUNT_VOLUME, *PSERVICE_DISMOUNT_VOLUME;
  115. typedef struct _SERVICE_VERIFY_FILE_ACESS {
  116. ACCESS_MASK DesiredAccess;
  117. WCHAR FileName[1];
  118. } SERVICE_VERIFY_FILE_ACCESS, *PSERVICE_VERIFY_FILE_ACCESS;
  119. typedef struct _SERVICE_DEFAULT_FILE_SECURITY {
  120. WCHAR FileName[1];
  121. } SERVICE_DEFAULT_FILE_SECURITY, *PSERVICE_DEFAULT_FILE_SECURITY;
  122. typedef struct _SERVICE_CREATE_PAGEFILE {
  123. LARGE_INTEGER MinSize;
  124. LARGE_INTEGER MaxSize;
  125. WCHAR FileName[1];
  126. } SERVICE_CREATE_PAGEFILE, *PSERVICE_CREATE_PAGEFILE;
  127. typedef struct _SERVICE_GETFULLPATHNAME {
  128. WCHAR *NameOut;
  129. WCHAR FileName[1];
  130. } SERVICE_GETFULLPATHNAME, *PSERVICE_GETFULLPATHNAME;
  131. #endif // ndef _SETUPDD_