 typedef struct _REG_UNICODE_STRING {
     unsigned short Length;
     unsigned short MaximumLength;
     [size_is(MaximumLength / 2), length_is((Length) / 2) ] 
         unsigned short* Buffer;
 } REG_UNICODE_STRING,
  *PREG_UNICODE_STRING;
  
 [
 uuid(894de0c0-0d55-11d3-a322-00c04fa321a1),
     pointer_default( unique ),
 version(1.0)
 ]
 interface InitShutdown
 //
 // Interface body
 //
 {
  
 //
 // Server name, binding handles.
 //
 typedef [handle] wchar_t* PREGISTRY_SERVER_NAME;
  
 //
 // Shutdown APIs.
 //
  
 unsigned long
 BaseInitiateShutdown(
     [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
     [ in, unique ] PREG_UNICODE_STRING lpMessage,
     [ in ] unsigned long dwTimeout,
     [ in ] unsigned char bForceAppsClosed,
     [ in ] unsigned char bRebootAfterShutdown
     );
  
 unsigned long
 BaseAbortShutdown(
     [ in, unique ] PREGISTRY_SERVER_NAME ServerName
     );
  
 unsigned long
 BaseInitiateShutdownEx(
     [ in, unique ] PREGISTRY_SERVER_NAME ServerName,
     [ in, unique ] PREG_UNICODE_STRING lpMessage,
     [ in ] unsigned long dwTimeout,
     [ in ] unsigned char bForceAppsClosed,
     [ in ] unsigned char bRebootAfterShutdown,
     [ in ] unsigned long dwReason
     );                      
 }
