#include "idl_types.h"

/*
  initshutdown interface definition
*/

import "lsa.idl";

[ 
  uuid("894de0c0-0d55-11d3-a322-00c04fa321a1"),
  version(1.0),
  endpoint("ncacn_np:[\\pipe\\InitShutdown]"),
  pointer_default(unique),
  helpstring("Init shutdown service")
] interface initshutdown
{
	typedef [v1_enum] enum {
		SHTDN_REASON_MAJOR_OTHER		= 0x00000000,
		SHTDN_REASON_MAJOR_HARDWARE		= 0x00010000,
		SHTDN_REASON_MAJOR_OPERATINGSYSTEM	= 0x00020000,
		SHTDN_REASON_MAJOR_SOFTWARE		= 0x00030000,
		SHTDN_REASON_MAJOR_APPLICATION		= 0x00040000,
		SHTDN_REASON_MAJOR_SYSTEM		= 0x00050000,
		SHTDN_REASON_MAJOR_POWER		= 0x00060000,
		SHTDN_REASON_MAJOR_LEGACY_API		= 0x00070000
	} initshutdown_ReasonMajor;

	typedef [v1_enum] enum {
		SHTDN_REASON_MINOR_OTHER		= 0x00000000,
		SHTDN_REASON_MINOR_MAINTENANCE		= 0x00000001,
		SHTDN_REASON_MINOR_INSTALLATION		= 0x00000002,
		SHTDN_REASON_MINOR_UPGRADE		= 0x00000003,
		SHTDN_REASON_MINOR_RECONFIG		= 0x00000004,
		SHTDN_REASON_MINOR_HUNG			= 0x00000005,
		SHTDN_REASON_MINOR_UNSTABLE		= 0x00000006,
		SHTDN_REASON_MINOR_DISK			= 0x00000007,
		SHTDN_REASON_MINOR_PROCESSOR		= 0x00000008,
		SHTDN_REASON_MINOR_NETWORKCARD		= 0x00000009,
		SHTDN_REASON_MINOR_POWER_SUPPLY		= 0x0000000a,
		SHTDN_REASON_MINOR_CORDUNPLUGGED	= 0x0000000b,
		SHTDN_REASON_MINOR_ENVIRONMENT		= 0x0000000c,
		SHTDN_REASON_MINOR_HARDWARE_DRIVER	= 0x0000000d,
		SHTDN_REASON_MINOR_OTHERDRIVER		= 0x0000000e,
		SHTDN_REASON_MINOR_BLUESCREEN		= 0x0000000f,
		SHTDN_REASON_MINOR_SERVICEPACK		= 0x00000010,
		SHTDN_REASON_MINOR_HOTFIX		= 0x00000011,
		SHTDN_REASON_MINOR_SECURITYFIX		= 0x00000012,
		SHTDN_REASON_MINOR_SECURITY		= 0x00000013,
		SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY	= 0x00000014,
		SHTDN_REASON_MINOR_WMI			= 0x00000015,
		SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL= 0x00000016,
		SHTDN_REASON_MINOR_HOTFIX_UNINSTALL	= 0x00000017,
		SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL= 0x00000018,
		SHTDN_REASON_MINOR_MMC			= 0x00000019,
		SHTDN_REASON_MINOR_TERMSRV		= 0x00000020
	} initshutdown_ReasonMinor;

	typedef [bitmap32bit] bitmap {
		SHTDN_REASON_FLAG_USER_DEFINED		= 0x40000000,
		SHTDN_REASON_FLAG_PLANNED		= 0x80000000
	} initshutdown_ReasonFlags;

	WERROR initshutdown_Init(
		[in,unique] uint16 *hostname,
		/*
		 * Note: lsa_String and winreg_String both result
		 *       in WERR_INVALID_PARAM
		 */
		[in,unique] lsa_StringLarge *message,
		[in] uint32 timeout,
		[in] uint8 force_apps,
		[in] uint8 do_reboot
	);

	WERROR initshutdown_Abort(
		[in,unique] uint16 *server
	);

	WERROR initshutdown_InitEx(
  		[in,unique] uint16 *hostname,
		/*
		 * Note: lsa_String and winreg_String both result
		 *       in WERR_INVALID_PARAM
		 */
		[in,unique] lsa_StringLarge *message,
		[in] uint32 timeout,
		[in] uint8 force_apps,
		[in] uint8 do_reboot,
		[in] uint32 reason
	);
}