հ˻
񽺶?    Ϲݸ  ׸  ŷ  Ȱ
Ʈ?  TECBOX   PRSBOX   ̿ȳ  
DEXTǰ  ý  ַǺ  S/W & ESD Ʈ
ƼƮ  ޹  Event Mall
ImDev-  ImDev-ƿҽ 
IT   DOT Zone
LiveSeminar  LiveConference
Windows Vista Դϴ.
   Windows Vista      Դϴ    Դϴ Ұ  ̵ Խû
ֹ 220 since 2006-12-29
&亯
&
Խ
ڷ
ٹ
ΰԽ
Խ
ϵ Խ
ϴ.
Խ
Į Խ
Dev Talk
й
糪 콺
  IT̾߱
  붥Ͼ Ʈ
   Խ
Ǿ
  e-Money
 Ȱ My Page
 ũ Խñۺ
 
 ּҷϰ
 

 &
 [MSDN] VISTA_RESTART MANAGER Դϴ.  | Win32/Win64 2007-06-05 10:44:19
 (nutman)  Բ ޽   ּҷϿ ߰մϴ. ΰԽ ȣ: 11  / :3,348
ŸƮ Ŵ(Restart Manager) [if gte mso 9]> 2 1089 2007-05-22T12:38:00Z 2007-06-05T01:36:00Z 2007-06-05T01:36:00Z 2 7959 45371 帲ťƼ 378 106 53224 11.8132 0 2 false false false MicrosoftInternetExplorer4 /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:; panose-1:2 3 6 0 0 1 1 1 1 1; mso-font-alt:Batang; mso-font-charset:129; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1342176593 1775729915 48 0 524447 0;} @font-face {font-family:; panose-1:2 11 6 0 0 1 1 1 1 1; mso-font-alt:Gulim; mso-font-charset:129; mso-generic-font-family:modern; mso-font-pitch:variable; mso-font-signature:-1342176593 1775729915 48 0 524447 0;} @font-face {font-family:" "; panose-1:2 11 5 3 2 0 0 2 0 4; mso-font-charset:129; mso-generic-font-family:modern; mso-font-pitch:variable; mso-font-signature:-1879047505 165117179 18 0 524289 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} @font-face {font-family:ü; panose-1:2 11 6 9 0 1 1 1 1 1; mso-font-charset:129; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-1342176593 1775729915 48 0 524447 0;} @font-face {font-family:"Lucida Console"; panose-1:2 11 6 9 4 5 4 2 2 4; mso-font-charset:0; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-2147482993 6144 0 0 31 0;} @font-face {font-family:"\@ "; panose-1:2 11 5 3 2 0 0 2 0 4; mso-font-charset:129; mso-generic-font-family:modern; mso-font-pitch:variable; mso-font-signature:-1879047505 165117179 18 0 524289 0;} @font-face {font-family:"\@ü"; panose-1:2 11 6 9 0 1 1 1 1 1; mso-font-charset:129; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-1342176593 1775729915 48 0 524447 0;} @font-face {font-family:"\@"; panose-1:2 3 6 0 0 1 1 1 1 1; mso-font-charset:129; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1342176593 1775729915 48 0 524447 0;} @font-face {font-family:"\@"; panose-1:2 11 6 0 0 1 1 1 1 1; mso-font-charset:129; mso-generic-font-family:modern; mso-font-pitch:variable; mso-font-signature:-1342176593 1775729915 48 0 524447 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; text-autospace:none; word-break:break-hangul; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:; mso-hansi-font-family:"Times New Roman"; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} a:link, span.MsoHyperlink {color:#0066FF; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} p {margin-top:7.2pt; margin-right:0cm; margin-bottom:7.2pt; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:; mso-bidi-font-family:;} pre {margin-top:7.2pt; margin-right:0cm; margin-bottom:7.2pt; margin-left:0cm; mso-pagination:widow-orphan; tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; background:#DDDDDD; font-size:12.0pt; font-family:"Lucida Console"; mso-fareast-font-family:ü; mso-bidi-font-family:ü; color:black;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:99.25pt 3.0cm 3.0cm 3.0cm; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:18.0pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:117341037; mso-list-template-ids:-1694588728;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l1 {mso-list-id:377708934; mso-list-template-ids:460624650;} @list l1:level1 {mso-level-text:%1; mso-level-tab-stop:18.0pt; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt;} @list l1:level2 {mso-level-text:%1-%2; mso-level-tab-stop:18.0pt; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt;} @list l1:level3 {mso-level-text:"%1-%2\.%3"; mso-level-tab-stop:36.0pt; mso-level-number-position:left; margin-left:36.0pt; text-indent:-36.0pt;} @list l1:level4 {mso-level-text:"%1-%2\.%3\.%4"; mso-level-tab-stop:36.0pt; mso-level-number-position:left; margin-left:36.0pt; text-indent:-36.0pt;} @list l1:level5 {mso-level-text:"%1-%2\.%3\.%4\.%5"; mso-level-tab-stop:54.0pt; mso-level-number-position:left; margin-left:54.0pt; text-indent:-54.0pt;} @list l1:level6 {mso-level-text:"%1-%2\.%3\.%4\.%5\.%6"; mso-level-tab-stop:72.0pt; mso-level-number-position:left; margin-left:72.0pt; text-indent:-72.0pt;} @list l1:level7 {mso-level-text:"%1-%2\.%3\.%4\.%5\.%6\.%7"; mso-level-tab-stop:72.0pt; mso-level-number-position:left; margin-left:72.0pt; text-indent:-72.0pt;} @list l1:level8 {mso-level-text:"%1-%2\.%3\.%4\.%5\.%6\.%7\.%8"; mso-level-tab-stop:90.0pt; mso-level-number-position:left; margin-left:90.0pt; text-indent:-90.0pt;} @list l1:level9 {mso-level-text:"%1-%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9"; mso-level-tab-stop:90.0pt; mso-level-number-position:left; margin-left:90.0pt; text-indent:-90.0pt;} @list l2 {mso-list-id:681055035; mso-list-type:hybrid; mso-list-template-ids:-133629630 583663954 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l2:level1 {mso-level-tab-stop:38.0pt; mso-level-number-position:left; margin-left:38.0pt; text-indent:-18.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} [if gte mso 10]>

ŸƮ Ŵ MSDN Դϴ.

, Ͻñ ٶϴ.

 

ŸƮ Ŵ(Restart Manager)

 

-

The Restart Manager API ( ŸƮ Ŵ) ν̳ Ʈ ϼϱ ʿ ϴ ý ϰų ٿ ִ.

ٵ ư ִ ø̼̳ Ͽ ν̳ Ʈ ý Ѵ.

ŸƮ Ŵ critical system services ˴ٿ ϸ, ν ۾ , Ǵ ϵ Ӱ ش.

 

- Ѱ?

ŸƮ Ŵ DLL Ĵٵ Ȥ Ŀ ν緯 ε ִ Ϲ C ̽ exportѴ.

ν緯 ø̼ ν̳ Ʈ Ǵ ü Ǿ ϴ register ŸƮ Ŵ ִ.  ׸ ν̳ Ʈ Ǵ ν緯 ̱ Ʈ ϵ ϱ ŸƮ Ŵ ִ.

ŸƮ Ŵ ϰ ִ non-critical 񽺵 Ȥ ø̼ǵ ˴ٿ ϰų Ѵ.

ν緯 ̳ process ID(PID) Ȥ Windows  ø̼̳ 񽺵 ˴ٿ Ȥ ϱ ŸƮ Ŵ Ѵ.

 

-

Ÿ Ȥ ȥ ijۺ ν緯 Ǹ ϴ ν ø̼ ڸ ̴.

ν 񽺸 Windows Installer 4.0 ϴ ø̼ ڵ ý ŸƮ ̱ ŸƮ Ŵ ϰ ȴ.

Ŀ ν緯 ŸƮ Ŵ API ȣ ϴ ø̼ǰ ˴ٿ ŸƮ ִ.

ý ŸƮ Ұ 쿡 ν緯 ŸƮ Ŵ API ȥ ּȭ ϴ ִ.

 

- ȯ

ŸƮ Ŵ API Ÿ Beta 2 Release ̻󿡼 ϴ. ø̼ ŸƮ Ŵ API εϿ ֵ ̱ DLL Ǿ ִ.

 

1. ŸƮ Ŵ (About Restart Manager)

 

ֿ Ʈ ν̳ Ʈ ǰ ִ ø̼̳ Ʈ ʿ Ѵٴ ̴.

ŸƮ Ŵ critical system services ˴ٿ ϸ, ν ۾ Ǵ ϵ Ӱ ش. ν̳ Ʈ ʿ ϴ ý ϰų ٿ ִ.

ŸƮ Ŵ Ʒ ø̼ ߰ Ʈ , ϵ ø̼ Ѵ.

 

1. GUI Applications

2. Console Applications

3. Windows Services

4. Windows explorer

 

ŸƮ Ŵ ȣڰ ׷ ϶ 㰡() ø̼̳ 񽺵 ˴ٿ ִ. ٸ ˴ٿ ζ.

 

ν̳ 񽺸 ν緯 v4.0 ϴ ø̼ ڵ ŸƮ Ŵ Ͽ ý δ. Ŀ ν緯 ŸƮ Ŵ API ȣ ֵ Ͽ ø̼ ˴ٿ Ȥ ִ.

ý Ұ ν緯 ŸƮ Ŵ API ̿ ȥ ּȭ ϴ ŸƮ Ҽ ִ. ν Ʈ ŸƮ Ŵ API ϰ Ѵٸ, Using Restart Manager ϶.

, Critical system services ý ŸƮ Ŵ 񽺸 ߰ų .

Critical system services Critical System Services ϶.

ø̼̳ 񽺵 (save) (user data) ŸƮ Ŵ ˴ٿ ǵ غǾ Ѵ.

ŸƮ Ŵ ø̼ǰ 񽺵 ۾ϱ Ѵٸ Guidelines for Applications and Services ؼ϶.

ŸƮ Ŵ API , ü ׸ Լ ۷ Restart Manager Reference ϶.

 

1.1 ø̼ǰ 񽺸 ̵ (Guidelines for Applications and Services)

Ÿ Ȥ ȥ ø̼ νϰų ý ̱ , ø̼̳ 񽺰 ϰ ˴ٿ ǰų ֵ Ʒ ̵ .

 

 - ýۿ Ʈ ġ ʿϴٸ ø̼ǰ 񽺵 ݵ ˴ٿ̳ ǵ غǾ Ѵ. Ϲ Ʈ ġɶ ø̼̳ 񽺴 ް ִ Ǿ Ѵ. Ʈ (hold)ϴ ø̼̳ 񽺵 ݵ ϰ ˴ٿ ǵ غǾ Ѵ.

 

 - ø̼ ŸƮ ʿ Ϳ Ͽ Ѵ. Guidelines for Applications ݵ ؼϱ ٶ.

 

 - 񽺴 Guidelines for Serveces ݵ ؼϿ Ѵ.

 

 - ŸƮ Ŵ critical system services Ͽ ˴ٿ .

   ׷ ߿ ̷ services ϰ ִ DLL ؾ Ѵ.


 

1.1.1 ø̼ ̵(Guidelines for Applications)

 

Ÿ ȥ Ǵ ø̼ ŸƮ Ŵ Ʈ ġ ʿ ˴ٿ Ȥ ֵ ϴ ̵ ؼϿ Ѵ. Guidlines for Services ϶.

 

 - ŸƮ Ŵ lParam ĶͰ ENDSESSION_CLOSEAPP(0x1) WM_QUERYENDSESSION ޽ ˴ٿ ϱ GUI ø̼ǿ Ѵ. ø̼ WM_QUERYENDSESSION ޽ ˴ٿ ʾƾ Ѵ. ֳϸ ٸ ø̼ ˴ٿ غ ʰ ֱ ̴.

GUI ø̼ ݵ WM_QUERYENDSESSION ޽ listenϿ Ѵ. ׸ ÷̼ ˴ٿ غǾٸ TRUE ؾ Ѵ. ƹ ø̼ǵ FALSE ŸƮ Ŵ lParam ĶͰ ENDSESSION_CLOSEAPP(0x1) wParam ĸͰ TRUE WM_ENDSESSION ޽ .

ŸƮ Ŵ WM_ENDSESSION ޽ ˴ٿ ʴ GUI ø̼ WM_CLOSE ޽ .

GUI ø̼ ϳ FALSE ϴ WM_QUERYENDSESSION ޽ Ѵٸ ˴ٿ ҵȴ. ˴ٿ ϰԵǸ ø̼ ġ ʰ ȴ.

 

 - GUI ø̼ WM_ENDSESSION ޽ ø̼ õ ŸӾƿ ð ˴ٿ غǾ Ѵ. ּ ø̼ Ŀ ʿ ͳ ϵ غǾ Ѵ. ø̼ Ϳ ֱ ϴ õѴ.

 

 - ŸƮ Ŵ ˴ٿ̳ ʿ ܼ ø̼ǿ CTRL_C_EVENT ޽ .

ܼ ø̼ CTRL_C_EVENT ޽ ø̼ õ ŸӾƿ ð ˴ٿ ǵ غϱ ʿ ׼ ؾ Ѵ.

ּ ܼ ø̼ CTRL_C_EVENT ޽ ʿϰ Ϳ ڵ鸵 HandlerRoutineԼ ϿѴ.

ø̼ Ϳ ֱ ϴ õѴ.

 

 - ϳ ø̼ ̶ ˴ٿ ޽ Ͽ ˴ٿ ν緯 RmShutdownԼ RmForceShutdown ɼ Ͽ ø̼ ˴ٿ ִ. ν緯 Ḧ ϸ ŸƮ Ŵ ˴ٿ ޽ ø̼ ˴ٿ õѴ. ϴ ˴ٿ Ѵ.

GUI ø̼ǰ ܼ ø̼ critical security update ϵ ˴ٿ ִ.

ս ֱ ø̼ ݵ ˴ٿ ޽ ڵ鸵 ؾ ϰ ʿ ˴ٿ Ǿ Ѵ.

- ø̼ ŸƮ RegisterApplicationRestartԼ Ͽ Ǿ Ѵ. ŸƮ Ŵ ݵ ϵ ø̼Ǹ ִ. ŸƮ Ŵ ø̼ ۵ Ǵ Command-Line ִ. ø̼ ³ Ϳ Բ ٽ ٸ ø̼ Command-Line ɿ Ǿ Ѵ.

 

 NOTE : ۵ ø̼ ˴ٿǾ Ǵ 丮 Ǿ߸ Ѵٸ, ø̼ ݵ 丮 ǰ 丮 Ǿ Ѵ.

 

 NOTE : RmRestart Լ α ڰ Ű ø̼ ʴ´. , RmRestart Լ α Ǿִ ڰ Run As Ŀǵ ۵ ø̼ ʴ´. ̷ ø̼ǵ ۵Ǿ߸ Ѵ.

 

 - ŸƮ Ŵ 䱸 Ʈ ġ ý Ҷ,  ø̼ǰ 񽺵 ˴ٿ ʴ´. ν緯 ý ŸƮ Ʈ ġ ϵ ܵд.

ν緯  ExitWindowEx Լ EWX_RESTARTAPPS ÷ Ȥ InitiateShutdown Լ SHUTDOWN_RESTARTAPPS ÷ 뿡 ý 䱸Ǿ Ʈ ȥ ִ. ش ÷׵ ڿ ġ ּȭ Ͽ ý Ʈ ø̼ Ѵ.


1.1.2 񽺸 ̵(Guidelines for Services)

 

񽺴 ŸƮ Ŵ Ʈ ġϱ 񽺿 ʿ ˴ٿ̳ ֵ ̵ ؼؾ Ѵ. ø̼ Guidelines for Applications ̵ ȴ.

 

 - 񽺴 ý 䱸 ʴ Service Control Manager Ͽ ˴ٿ̳ ؾ Ѵ. ̵ ܴ lsass.exeȤ services.exe ȿ Ǿ critical system μ̴.

 

 - ŸƮ Ŵ . 񽺰 ˴ٿ̳ ɶ ִ 񽺵鵵 ˴ٿ̳ ȴ.

 

 - svchost.exe 񽺵 񽺰 ˴ٿ ɶ ݵ unload DLLs ؾ Ѵ. ڴ Ʒ ϵ Ʈ Ű REG_DWORD 1 Ͽ Ѵ.

 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\

         <Your Service>\Parameters\ServiceDllUnloadOnStop

 

񽺰 ServiceMain 񽺰 ۵ǰ 񽺰 svchost.exe ؽƮ ϴ active ⵵ Ǿִٸ 񽺰 Ʈ Ű unloads the DLLs ϶.

 

񽺰 ServiceMain RegisterWaitForSingleObject Լ ϰ Ͽ ݹ Լ ϴ Ǿ ִٸ ƮŰ ݵ Ǿ ־ ϰ 񽺴 Լ exportϿ Ѵ: SvcHostPushServiceGlobals

 

Լ ۷ι Ϳ 񽺷 svchost.exe μ ѱ ؾѴ. RegisterWaitForSingleObjectԼ ȣϴ RegisterStopCallback ȣѴ.

 - 񽺵 Ʈ Ŵ(SCM) Ŀ ͹ ð ؾ Ѵ. Ŀ ͹ Ŀ ׼ ϱ SCM ٸ /ʸ Ÿ ð̴. ð īƮ 0 ϱ Ʈ Ŵ ٸ ʸ Ÿ ð̴. 񽺵 Ӽ ChangeServiceConfig2 Լ ִ.

Critical services ݵ ù 1 Ŀ ǵ Ʒ Ŀ ؾ Ѵ

 

ι° 2Ŀ ۵ǰ ° 1 ڿ ǻͰ Ʈ ȴ.

īƮ 300 0 ȴ.

Recovery Actions: Restart/60000/Restart/120000/Reboot/60000 & Reset = 300.

 

Critical 񽺵 non-critical 񽺵 ۵Ǿ Ѵ. critical services ƴ 񽺵 Ʒ õ Ŀ Ѵ. ù° 2 񽺸 ϸ, 񽺴 ι° ʰ ڴ 簡 ʿ ̴. īƮ 900 0 µȴ.

Recovery Actions: Restart/120000/Restart/300000/None/0 & Reset = 900


1.1.3  Critical ý (Critical System Services)

 

Critical ý 񽺴 ý ŸƮ Ŵ ߰ų . ̵ 񽺰 ý ŸƮ 䱸ص 񽺰 ϴ  ̳ ҽ ƮѴ.

 μ critical system service ƴ ϱ

 

1. RmRegisterResources Լ ϴ μ Ѵ.

2. RmGetList Լ ȣϿ RM_PROCESS_INFO ü ´.

3. RM_PROCESS_INFOü ϴ RM_APP_TYPE ϴ Application Type. critical ý μ RmCritical Ѵ.

 

Critical ý 񽺴 smss.exe, csrss.exe, winit.exe, logonui.exe, lsass.exe, services.exe, winlogon.exe, System, svchost.exe with RPCSS svchost.exe with Dcom/Pnp Ѵ.


 

2. ŸƮ Ŵ ϱ (Using Restart Manager)

 

̾ ǵ ŸƮ Ŵ API Ѵ. ø̼̳ 񽺴 Ʒ Guidelines for Applications and Services ؼϿ Ѵ.

 

Microsoft Windows Installer ϱ

Microsoft Windows Installer Version 4.0 Windows Ÿ ȥ ø̼ ν ̴. ν緯 4.0 ϴ ø̼ ġ ý ̱ ڵ ŸƮ Ŵ Ѵ. Ŀ ν緯 ŸƮ Ŵ API ȣϵ Ͽ ý ŸƮ 䱸 ˴ٿ̳ ø̼ǰ 񽺸 ִ.

ý Ұ ν緯 InitiateShutdown Ȥ ExitWindowsEx Լ ȥ ּȭ ϴ ý ִ.

ȭ ν緯 Ű MsiRMFilesInUse ̾α ڽ Ե UI Ǿ Ѵ. ڼ ν緯 SDK Using Windows Installer with Restart Manager ϶.

 

Ŀ ν緯 󿡼 ŸƮ Ŵ API ϱ

ý ʿ ϴ Ŀ ν緯 Ŀ ׼ ϰ ִ ν緯 Ű ˴ٿ̳ ø̼ǰ ŸƮ Ŵ API ִ.

 

 - ŸƮ Ŵ API Ǵ ɵ ݵ ǰ Ǿ Ѵ.

   Ǵ 64 ŸƮ Ŵ ýۿ ÿ ִ.

   Primary ν緯 ŸƮ Ŵ ۰ Ѵ. ν緯 ŸƮ Ŵ Using Restart Manager with a Primary Installer ϶.

 - ν ʿ信 ̻ secondary ν緯 ʿ primary ν緯 ŸƮ Ŵ ǰ in-process Ȥ out of process · join ϴ.

   join secondary ν緯 primary ν緯 ϴ Ű ʿ Ѵ.

   secondary ν緯 뿡 ڼ Resart Manager with a Secondary Installer ϶.

 - ȭ ν緯 ø̼̳ 񽺸 ݴ θ ֵ MsiRMFilesInUse ̾α ڽ Ե UI Ǿ Ѵ.

   ڼ ν緯 SDK Using Windows Installer with Restart Manager ϶.

 - ν緯 ŸƮ Ŵ ¸ , Ȥ ŸƮ Ŵ API ȣ ִ. ڼ Ʒ ϶. : Getting the Status of a Restart Manager Operation, Canceling the Current Restart Manager Operation

 - ν緯 ŸƮ Ŵ API ȣϱ ý ̷ Ұ ʾƾ Ѵ. ̰ 64Ʈ  Ǵ 32Ʈ ν緯 %windir%system32 丮 Ⱑ Ұ ϴٴ ǹѴ.


2-1 Primary ν緯 ŸƮ Ŵ ϱ (Using Restart Manager with a Primary Installer)

Ʒ ŸƮ Ŵ Ͽ ø̼̳ 񽺸 ˴ٿ̳ ϴ Ѵ.

ŸƮ Ŵ ν緯 Բ ν緯 UI Ʈϴ Primary ν緯 ִ.

 

à primary installer ŸƮ Ŵ ϴ

1. ν緯 RmStartSession Լ ȣϿ ŸƮ Ŵ ϰ ڵ Ű ´.

2. ν緯 RmRegisterResources Լ ȣϿ ҽ Ѵ.

ŸƮ Ŵ ø̼ǰ 񽺿 ݵ ˴ٿ Ȥ ۵ǵ Ǿ ҽ ִ. ġ ޴ ҽ ݵ ǿ ϵǾ ־ Ѵ. ҽ ̸Ȥ service short name Ȥ RM_UNIQUE_PROCESS ü ĺ ִ.

3. ν緯 RmGetList Լ ȣϿ ˴ٿǰų Ǿ ø̼ǰ RM_PROCESS_INFO ü 迭 ´.

lpdwRebootReason Ķ (RmGetList Լ ϰ) 0 ƴ ŸƮ Ŵ ø̼̳ ˴ٿ ϵ ҽ . ý ˴ٿ ġ 䱸ϰ ȴ. ν緯 α׷̳ 񽺸 , Ȥ ý ˴ٿ̳ ŸƮ ϴ ׼ Ѵ.

lpdwRebootReason Ķ (RmGetList Լ ϰ) 0 ν緯 RmShutdown Լ ȣϿ 񽺿 ҽ ϵ ø̼ ˴ٿ Ѵ.

ν緯 ġ ϷḦ 䱸ϴ ý Ͽ Ѵ. ν緯 ŸƮ Ŵ, ˴ٿ Ǿ ϵ ø̼ ֵ ϱ RmRestartԼ ȣؾ Ѵ.

4. ν緯 RmAddFilter Լ Ͽ Ư ø̼ǰ ŸƮ Ŵ ɿ ˴ٿ̳ ִ. RmGetFilterList Լ ˴ٿ̳ κ ͸ Ǿ ø̼̳ Ʈ Ѵ.

5. ν緯 RmEndSession Լ ȣϿ Restart Manager Ѵ.

primary ν緯 ̿ ŸƮ Ŵ ۰ 뿡 secondary ν緯 Ͽ ϴ joinning ϴ Using Restart Manager with a Secondary Installer ϶.

 

2.2 Secondary ν緯 ŸƮ Ŵ ϱ(Using Restart Manager with a Secondary Installer)

Ʒ primary secondary ν緯 ŸƮ Ŵ ϴ Ѵ. primary secondary ν緯 primary ν緯 UI Ʈ Ѵ.

 

à primary secondary ν緯 ŸƮ Ŵ ϴ

1. primary ν緯 RmStartSessiond Լ ȣϿ ŸƮ Ŵ ϰ ڵ Ű ´.

2. primary ν緯 secondary ν緯 ϰų, (contact)ϰ ܰ迡 Ű Ѵ.

3. secondary ν緯 ŸƮ Ŵ join Ű RmJoinsession Լ ȣѴ. secondary ν緯 ν緯 ýƮ primary ν緯 ۵ ǿ joinѴ.

4. primary secondary ν緯 RmRegisterResources Լ ȣϿ ҽ Ѵ. ŸƮ Ŵ ø̼ǰ 񽺿 ݵ ˴ٿ Ȥ ۵ǵ Ǿ ҽ ִ. ġ ޴ ҽ ݵ ǿ ϵǾ ־ Ѵ. ҽ ̸Ȥ service short name Ȥ RM_UNIQUE_PROCESS ü ĺ ִ.

5. primary ν緯 RmGetList Լ ȣϿ ˴ٿǰų ŸƮ Ǿ ø̼ǰ RM_PROCESS_INFO ü 迭 ´.

lpdwRebootReason Ķ (RmGetList Լ ϰ) 0 ƴ ŸƮ Ŵ ø̼̳ ˴ٿ ϵ ҽ . ý ˴ٿ ġ 䱸ϰ ȴ. Primary ν緯 α׷̳ 񽺸 , Ȥ ý ˴ٿ̳ ŸƮ ϴ ׼ Ѵ.

lpdwRebootReason Ķ (RmGetList Լ ϰ) 0 ν緯 RmShutdown Լ ȣϿ 񽺿 ҽ ϵ ø̼ ˴ٿ Ѵ.

Primary secondary ν緯 ġ ϷḦ 䱸ϴ ý Ͽ Ѵ. ν緯 ŸƮ Ŵ, ˴ٿ Ǿ ϵ ø̼ ֵ ϱ RmRestartԼ ȣؾ Ѵ.

6. primary secondary ν緯 RmEndSession Լ ȣϿ Restart Manager Ѵ.

 

Ʒ ڵ primary ν緯 ۰ ŸƮ Ŵ ִ .

 

DWORD dVal;
         DWORD dwSessionHandle = -1;
         WCHAR sessKey[CCH_RM_SESSION_KEY+1];
         UINT nProcInfo = 100;
         UINT nProcInfoNeeded;
         RM_PROCESS_INFO *rgProcInfo = NULL;
         DWORD lpdwRebootReason = 0;
         DWORD nServices = 1;
         LPWSTR rgsServices[] = { "iisadmin" };
         DWORD nProcs = 0;
         DWORD nFiles = 1;
         LPWSTR rgsFiles[] = { "c:\\windows\\system32\\oleaut32.dll" };
 
         rgAffectedApps = new RM_PROCESS_INFO[nProcInfo];
 
         // Starting Session
         dVal = RmStartSession( &dwSessionHandle, sessKey );
         if (dVal != ERROR_SUCCESS)
                 goto RM_END;
 
         // Register items
         dVal = RmRegisterResources(
                          dwSessionHandle,
                          nFiles, rgsFiles,                  // Files
                          nProcs, NULL,                      // Processes
                          nServices, rgsServices );          // Services
         if (dVal != ERROR_SUCCESS)
                 goto RM_END;
 
         // Getting affected apps
         dVal = RmGetList(
                          dwSessionHandle,
                          &nProcInfoNeeded,
                          &nAffectedApps, rgAffectedApps, &lpdwRebootReason );
         if (dVal != ERROR_SUCCESS)
                 goto RM_END;
 
         // Shut down apps
         dVal = RmShutdown( dwSessionHandle, 0, NULL );
         if (dVal != ERROR_SUCCESS)
                 goto RM_END;
 
         // Restart apps
         dVal = RmRestart( dwSessionHandle, NULL );
         if (dVal != ERROR_SUCCESS)
                 goto RM_END;
 
 
RM_END:
 
         if (rgAffectedApps)
         {
                 delete [] rgAffectedApps;
                 rgAffectedApps = NULL;
         }
         
         if (dwSessionHandle != -1)
         {
                 // Clean up session
                 dVal = RmEndSession( dwSessionHandle );
                 dwSessionHandle = -1;

             }

 

Ʒ ڵ secondary ν緯 ϴ ŸƮ Ŵ ǿ join ϴ ִ ̴.

 

DWORD dVal;
         DWORD dwSessionHandle = -1;
         WCHAR sessKey[CCH_RM_SESSION_KEY+1];
         DWORD nServices = 1;
         LPWSTR rgsServices[] = { "iisadmin" };
         DWORD nProcs = 0;
         DWORD nFiles = 1;
         LPWSTR rgsFiles[] = { "c:\\windows\\system32\\oleaut32.dll" };
 
 // Secondary installer obtains the session key from the 
 // primary installer
 
         // Joining Session
         dVal = RmJoinSession( &dwSessionHandle, sessKey );
         if (dVal != ERROR_SUCCESS)
                 goto RMSUB_END;
 
         // Register items
         dVal = RmRegisterResources(
                          dwSessionHandle,
                          nFiles, rgsFiles,                  // Files
                          nProcs, NULL,                      // Processes
                          nServices, rgsServices );          // Services
         if (dVal != ERROR_SUCCESS)
                 goto RMSUB_END;
 
RMSUB_END:
         if (dwSessionHandle != -1)
         {
                 // Clean up session
                 dVal = RmEndSession( dwSessionHandle );
                 dwSessionHandle = -1;
         }
 

 

 


 

2.3 Getting the Status of a Restart Manager Operation

 

ټ ø̼ǵ 񽺵 ˴ٿ̳ , ŸƮ Ŵ   ñ() Ȯ ִ. Ʒ ޽ ¸ Ǿ ִ.

 

à ŸƮ Ŵ

1. ν緯 ˴ٿ̳ Ǿ ø̼ RM_WRITE_STATUS_CALLBACK Լ ؾ Ѵ. Լ Ͽ UI α׿ ִ.

2. ν緯 RmShutdown Ȥ RmRestartԼ ȣ RM_WRITE_STATUS_CALLBACKԼ ͸ Ͽ Ѵ.


 

2.4 ŸƮ Ŵ (Canceling the Current Restart Manager Operation)

 

׼ ٸ ׼ ν緯 Ʒ ޽ ŸƮ ϴ ִ.

à ŸƮ Ŵ

 - ν緯 ٸ κ RmGetList, RmShutdown, Ȥ RmRestart ֵ RMCancelCurrentTask ȣ ִ. ŸƮ Ŵ RMCancelCurrentTask Լ ȣ ѵ Ұ ϴ.


3. ŸƮ Ŵ ۷ (Restart Manager Reference)

 

ŸƮ Ŵ API Ʒ Ʈ Ѵ.

 - Callback Functions

 - Enumerations

 - Functions

 - Structures


3.1 ݹ Լ(Callback Functions)

 

ŸƮ Ŵ API Ʒ ǥ ݹ Լ Ѵ.

 

Callback Function

Description

RM_WRITE_STATUS_CALLBACK

ŸƮ Ŵ ø̼ ŸƮ Ŵ Լ ϼ ۼ ޱ Լ ͸ Ѵ.

 

 


 

3.1.1 RM_WRITE_STATUS_CALLBACK

 

RM_WRITE_STATUS_CALLBACK Լ ŸƮ Ŵ Ʈ ϴ UI ִ. ŸƮ Ŵ ν緯 ŸƮ Ŵ Լ ϼ ۼ ޱ ͸ Լ Ѱ ִ. ϼ ۼ ϰ ü ǰ ġ ø̼ ̸ Ѵ.

 

typedef void ( *RM_WRITE_STATUS_CALLBACK )(

  UINT nPercentComplete

);

 

Ķ

           nPercentComplete

           [in] 0~100 integer ˴ٿǰų Ǿ ø̼ ѹ ۼ Ÿ.

 

           Լ ʹ ʴ´.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

See also

           RmRestart

           RmShutdown


3.2 (Enumerations)

 

ŸƮ Ŵ API Ʒ ڸ Ѵ.

 

RM_APP_STATUS

RM_APP_TYPE

RM_FILTER_ACTION

RM_FILTER_TRIGGER

RM_REBOOT_REASON

RM_SHUTDOWN_TYPE


3.2.1 RM_APP_STATUS

ŸƮ Ŵ Ȱȭ ø̼ ¸ Ѵ.

typedef enum {

  RmStatusUnknown = 0x0,

  RmStatusRunning = 0x1,

  RmStatusStopped = 0x2,

  RmStatusStoppedOther = 0x4,

  RmStatusRestarted = 0x8,

  RmStatusErrorOnStop = 0x10,

  RmStatusErrorOnRestart = 0x20,

  RmStatusShutdownMasked = 0x40,

  RmStatusRestartMasked = 0x80

}RM_APP_STATUS;

 

Constants

RmStatusUnknown : Ʒ  ¿ ø̼

RmStatusRunning : ø̼

RmStatusStopped : ŸƮ Ŵ ø̼

RmStatusStoppedOther : ŸƮ Ŵ ø̼ ܺ ׼

RmStatusRestarted : ŸƮ Ŵ ø̼

RmStatusErrorOnStop : ŸƮ Ŵ ø̼ ߰

RmStatusErrorOnRestart : ŸƮ Ŵ ø̼ ߰

RmStatusShutdownMasked : Ϳ ˴ٿ ŷ

RmStatusRestartMasked : Ϳ ŷ

Remarks

RM_APP_STAUS OR ϴ.

ø̼ ŸƮ Ŵ ׼ ϵ Ѵ.

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

see also

RM_PROCESS_INFO

3.2.2 RM_APP_TYPE

RM_PROCESS_INFO ü ø̼ Ÿ Ѵ.

typedef enum {{

  RmUnknownApp = 0,

  RmMainWindow = 1,

  RmOtherWindow = 2,

  RmService = 3,

  RmExplorer = 4,

  RmConsole = 5,

  RmCritical = 1000

}RM_APP_TYPE;

Constants

RmUnknownApp :  Ÿε ĺ Ұ ø̼. ˴ٿ ؾ߸ ˴ٿ ø̼

RmMainWindow : 쿡 ̴ ܵ μ(stand-alone) ø̼

RmOtherWindow :  ܵ μ(stand-alnoe) Ǿ ʰ 쿡 ʴ ø̼

RmService : ø̼

RmExplorer : Explorer ø̼

RmConsole : ܵ ܼ ø̼

RmCritical : μ ˴ٿ ġ ϷḦ ý ʿ. μ Ʒ ˴ٿ .

__μ Critical μ ̴.

__ ڰ μ ˴ٿ ϱ ڰ ߴ.

__μ ŸƮ Ŵ primary ν緯 ִ.

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

See Also

RM_PROCESS_INFO


3.2.3 RM_FILTER_ACTION

̳ ˴ٿ ׼ Ÿ Ѵ.

typedef enum {

  RmInvalidFilterAction= 0,

  RmNoRestart = 1,

  RmNoShutdown = 2

}RM_FILTER_ACTION;

 

Constants

RmInvalidFilterAction : ȿ ׼

RmNoRestart : õ ø̼̳

RmNoShutdown : õ ø̼̳ ˴ٿ

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

See Also

RM_FILTER_INFO

RmAddFilter

 


 

3.2.4 RM_FILTER_TRIGGER

ø̼̳ Ȥ ˴ٿ ׼

typedef enum {

  RmFilterTriggerInvalid = 0,

  RmFilterTriggerFile = 1,

  RmFilterTriggerProcess = 2,

  RmFilterTriggerService = 3

}RM_FILTER_TRIGGER;

 

Constants

RmFilterTriggerInvalid : ȿ Ʈ

RmFilterTriggerFile : ϸ ĺ Ǵ ø̼ ˴ٿ̳

RmFilterTriggerProcess : RM_UNIQUE_PROCESS ü ĺǴ ø̼ ˴ٿ̳

RmFilterTriggerService : (short name) ĺǴ ø̼ ˴ٿ̳

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

See Also

RM_FILTER_INFO


3.2.5 RM_REBOOT_REASON

ý ý Ʈ ʿ

typedef enum {

  RmRebootReasonNone = 0x0,

  RmRebootReasonPermissionDenied = 0x1,

  RmRebootReasonSessionMismatch = 0x2,

  RmRebootReasonCriticalProcess = 0x4,

  RmRebootReasonCriticalService = 0x8,

  RmRebootReasonDetectedSelf = 0x10

}RM_REBOOT_REASON;

Constants

RmRebootReasonNone : ý Ʈ ʿġ

RmRebootReasonPermissionDenied : ڰ ̻ μ ˴ٿ ϱ .

RmRebootReasonSessionMismatch : ̻ μ ٸ ͹̳ ǿ ǰ .

RmRebootReasonCriticalProcess : ̻ μ critical μ ˴ٿ Ǿ ϱ ý Ʈ ʿ

RmRebootReasonCriticalService : ̻ 񽺰 critical 񽺷 ˴ٿ Ǿ ϱ ý Ʈ ʿ

RmRebootReasonDetectedSelf : μ ݵ ˴ٿ Ǿ ϱ ý Ʈ ʿ.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

See Also

RmGetList


3.2.6 RM_SHUTDOWN_TYPE

ø̼ ˴ٿ

typedef enum {

  RmForceShutdown = 0x1,

  RmShutdownOnlyRegistered = 0x10

}RM_SHUTDOWN_TYPE;

Constants

RmForceShutdown : ø̼̳ 񽺵 Ÿ ƿ ð Ŀ ˴ٿ . ŸƮ Ŵ û ˴ٿ ø̼ 30 Ŀ ˴ٿ ȴ. (񽺴 20)

Ʈ Ÿ Remarks ǿ Ʈ Ű ϴ.

 

RmShutdownOnlyRegistered : RegisterApplicationRestart Լ Ͽ ϵ ø̼ ˴ٿ Ѵ. μ 񽺸  μ 񽺵 ˴ٿ ʴ´.

 

Remarks

Ʒ õ Ʈ Ű ø̼ ˴ٿ Ƚ ʱȭ Ѵ.

HKCU\Control Panel\Desktop\HungAppTimeout

 

Ʒ õ Ʈ Ű ˴ٿ Ƚ ʱȭ Ѵ.

HKLM\System\CurrentControlSet\Control\WaitToKillServiceTimeout

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

See Also

RmShutdown


3.3 Լ(Functions)

ŸƮ Ŵ API Ʒ ̺ ĺ Լ Ѵ.

Enumeration

Description

RmAddFilter

˴ٿ̳ ׼ .

RmStartSession

ο ŸƮ Ŵ

RmJoinSession

ø̼ μ ϴ ŸƮ Ŵ (Join)

RmEndSession

ŸƮ Ŵ

RmRegisterResources

ŸƮ Ŵ ǿ ϸ̳ (short name) Ȥ RM_UNIQUE_PROCESS ü ҽ

RmGetList

ν緯 ϵǾ ø̼ǿ ġ ҽ Ʈ

.

RmGetFilterList

̹ ˴ٿ̳ ŸƮ ¸ Ѵ.

RmShutdown

ø̼̳ ˴ٿ Ѵ.

RmRemoveFilter

̹ ˴ٿ̳ Ѵ.

RmRestart

RmShutdownԼ ˴ٿ ǰ, RegisterApplicationRestart ø

̼̳ 񽺸 Ѵ..

RmCancelCurrentTask

RmGetList, RmShutdown, Ȥ RmRestart Լ Ѵ.

 


 

3.3.1 RmAddFilter

ø̼̳ 񽺿 Ǵ ׼ ˴ٿ ϰų ϵ .

primary ν緯 RmAddFilter Լ ȣ ִ. ֱ ȣ , μ Ȥ 񽺿 .

DWORD WINAPI RmAddFilter(

  DWORD dwSessionHandle,

  LPCWSTR strFilename,

  RM_UNIQUE_PROCESS* Application,

  LPCWSTR strShortServiceName,

  RM_FILTER_ACTION ActionType

);

 

Ķ

dwSessionHandle : [in] ϴ ŸƮ Ŵ ڵ

strFilename : [in, optional] Ʈ ͷ ø̼ Ǯ θ ´. ˴ٿ̳ ׼ Ǯ θ Ͽ Ѵ.

Application : [in, optional] øɼ RM_UNIQUE_PROCESS ü . ˴ٿ̳ ׼ RM_UNIQUE_PROCESS ü Ͽ Ѵ. Ķʹ strFilename ̳ strShortName ĶͰ NULL ƴҶ ݵ NULL̾ Ѵ.

strShortServiceName : [in, optional]  Ʈ . ˴ٿ̳ ׼ short service filename Ͽ Ѵ. Ķʹ strFilename̳ Application ĶͰ NULL ƴ ݵ NULL̾ Ѵ.

ActionType: [in] Ÿ ϴ RM_FILTER_ACTION

 

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS

0

Լ Ϸ.

ERROR_BAD_ARGUMENTS
160

̻ ڰ Ʋ. ŸƮ Ŵ Լ ϵǸ non-null non-zero Ȥ 0 ڷ Ѿ´

ERROR_SESSION_CREDENTIAL_CONFLICT
1219

secondary ν緯 ȣ Ǵ . primary ν緯 ϴ.

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 

See Also

RmGetFilterList


 

3.3.2. RmCancelCurrentTask

RmGetList, RmShutdown RmRestart Ѵ. Լ ݵ RmStartSessionԼ ȣϿ ۵ ø̼ǿ ȣ ִ.

DWORD WINAPI RmCancelCurrentTask(

  DWORD dwSessionHandle

);

 

Ķ

dwSessionHandle : [in] ϴ ڵ

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS
0

û .

ERROR_BAD_ARGUMENTS
160

̻ ڰ Ʋ. ŸƮ Ŵ Լ Ǹ non-null non-zero Ȥ 0 ڷ Ѿ´.

ERROR_OUTOFMEMORY
14

޸𸮰 Ͽ ŸƮ Ŵ

ERROR_INVALID_HANDLE
6

ڵ ϱ ŸƮ Ŵ ʴ´

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 

See Also

RmGetList

RmRestart

RmShutdown


3.3.3. RmEndSession

ŸƮ Ŵ Ѵ. Լ ݵ RmStartSessionԼ ȣ⿡ ۵ primary ν緯 ȣ ؾ Ѵ. RmEndSessionԼ ǿ (joined) ̻ secondary ν緯 ҽ ʿ䰡 secondary ν緯 ȣ ִ.

 

Ķ

dwSessionHandle : ϴ ŸƮ Ŵ ڵ

DWORD WINAPI RmEndSession(

  DWORD dwSessionHandle

);

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS
0

Լ Ϸ

ERROR_SEM_TIMEOUT
121

ŸƮ Ŵ Լ Ҵ Ƚ Ʈ mutex . ŸƮ Ŵ з ý Ʈ ǰ

ERROR_WRITE_FAULT
29

Ʈ аų

ERROR_OUTOFMEMORY
14

޸𸮰 Ͽ ŸƮ Ŵ

ERROR_INVALID_HANDLE
6

ȿ ڵ Լ ޵Ǿ. ڵ ϴ  ŸƮ Ŵ ǵ ʴ´.

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 

See Also

RmJoinSession

RmStartSession


3.3.4 RmGetFilterList

RmAddFilterԼ ̹ ˴ٿ̳ ׼ Ʈ. 濡 ͸ Ѵ.

DWORD WINAPI RmGetFilterList(

  DWORD dwSessionHandle,

  PBYTE pbFilterBuf,

  DWORD cbFilterBuf,

  LPDWORD cbFilterBufNeeded

);

 

Ķ

dwSessionHandle : [in] ϴ ŸƮ Ŵ ڵ

pbFilterBuf : [out] ִ

cbFilterBuf : [in, optional] ִ (bytes)

cbFilterBufNeeded : [out] ۰ ʿ ϴ Ʈ

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS
0

Լ Ϸ

ERROR_BAD_ARGUMENTS
160

̻ ڰ Ʋ. ŸƮ Ŵ Լ ϵǸ non-null non-zero Ȥ 0 ڷ Ѿ´.

ERROR_MORE_DATA
234

RmGetFilterListԼ pbFilterBuf ۰ ø̼ ũ⺸ ϵǴ .

cbFilterBufNeeded õ ʴ´.

ERROR_SESSION_CREDENTIAL_CONFLICT
1219

secondary ν緯 ȣ Ҷ ϵǴ . primary ν緯 ϴ.

 

Remarks

pbFilterBuf ۴ Ʈ ϱ RM_FILTER_INFO ȯ Ǿ Ѵ.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 

See Also

RmAddFilter


3.3.5 RmGetList

ŸƮ Ŵ ǰ Բ ϵ ø̼̰ 񽺿 Ǿ ҽ Ʈ ´.

DWORD WINAPI RmGetList(

  DWORD dwSessionHandle,

  UINT* pnProcInfoNeeded,

  UINT* pnProcInfo,

  RM_PROCESS_INFO rgAffectedApps[ ],

  LPDWORD lpdwRebootReasons

);

 

Ķ

dwSessionHandle : [in] ϴ ŸƮ Ŵ ڵ

pnProcInfoNeeded : [out] ʿ ϴ 迭 ũ ͷ  ġ ø̼ǰ 񽺵 ޴ RM_PROCESS_INFOü(?)

pnProcInfo : [in, out] 迭 ä ü RM_PROCESS_INFO ü

rgAffectedApps : [in, out] ǿ ϵ ҽ ϴ ø̼ǰ Ʈ RM_PROCESS_INFO ü 迭

lpdwRebootReasons : [in, out] ý Ʈ ʿ ϴ RM_REBOOT_REASON ġ ޴

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS
0

Լ Ϸ

ERROR_MORE_DATA
234

RmGetFilterListԼ pbFilterBuf ۰ ø̼ ũ⺸ ϵǴ .

ERROR_CANCELLED
1223

ڿ ҵ.

ERROR_SEM_TIMEOUT
121

ŸƮ Ŵ Լ Ҵ Ƚ Ʈ mutex . ŸƮ Ŵ з ý Ʈ ǰ

ERROR_BAD_ARGUMENTS
160

̻ ڰ Ʋ. ŸƮ Ŵ Լ Ǹ non-null non-zero

Ȥ 0 ڷ Ѿ´.

ERROR_WRITE_FAULT
29

Ʈ аų .

ERROR_OUTOFMEMORY
14

޸𸮰 Ͽ ŸƮ Ŵ .

ERROR_INVALID_HANDLE
6

ȿ ڵ Լ ޵Ǿ. ڵ ϴ  ŸƮ Ŵ ǵ ʴ´.

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 

See Also

RmCancelCurrentTask


 

3.3.6 RmJoinSession

 secondary ν緯 ϰ ִ ŸƮ Ŵ ǿ (join)Ѵ. Լ ۵ primary ν緯 Ű Բ ȣ Ǿ Ѵ. ŸƮ Ŵ Լ κп Ű 䱸Ǿ . secondary ν緯 ǿ (join) RmRegisterResourcesԼ ȣϿ ҽ ִ.

DWORD WINAPI RmJoinSession(

  DWORD* pSessionHandle,

  const WCHAR strSessionKey[CCH_RM_SESSION_KEY+1]

);

 

Ķ

pSessionHandle : [out] ϴ ŸƮ Ŵ ڵ

strSessionKey : [in] ϴ Ű ϴ Ʈ

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS
0

Լ Ϸ.

ERROR_SESSION_CREDENTIAL_CONFLICT
1219

ν緯 ȣ Ҷ ϵǴ . primary ν緯 ϴ.

ERROR_SEM_TIMEOUT
121

ŸƮ Ŵ Լ Ҵ Ƚ Ʈ mutex . ŸƮ Ŵ з ý

Ʈ ǰ

ERROR_BAD_ARGUMENTS
22

̻ ڰ Ʋ. ŸƮ Ŵ Լ ϵǸ non-null non-zero Ȥ 0 ڷ Ѿ´.

ERROR_WRITE_FAULT
29

Ʈ аų .

ERROR_MAX_SESSIONS_REACHED
353

ƽ ߴ.

ERROR_OUTOFMEMORY
14

޸𸮰 Ͽ ŸƮ Ŵ .

 

Remarks

RmJoinSessionԼ secondary ν緯 ϴ ŸƮ Ŵ ǿ (join) Ѵ. Secondary ν緯 Ϲ UI Ʈ ʰ primary ν緯 in-process Ȥ out-of-process ϴ ν緯̴. Primary ν緯 RmStartSession Լ UIȤ Ʈ sequence of multiple ġ Ʈ ϴ ø̼Ǹ ȣ ִ.

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

See Also

RmEndSession
RmStartSession

 


 

3.3.7 RmRegisterResources

ŸƮ Ŵ ǿ ҽ Ѵ. ŸƮ Ŵ ˴ٿ̳ Ǿ ø̼̰ 񽺸 Ͽ ǰ Բ ҽ Ʈ Ѵ. ҽ ϸ̳, , Ǵ ø̼ RM_UNIQUE_PROCESS ü ĺ ִ. RmRegisterResources Լ primary Ȥ secondary ν緯 ȴ.

DWORD WINAPI RmRegisterResources(

  DWORD dwSessionHandle,

  UINT nFiles,

  LPCWSTR rgsFilenames[nFiles],

  UINT nApplications,

  RM_UNIQUE_PROCESS rgApplications[nApplications],

  UINT nServices,

  LPCWSTR rgsServiceNames[nServices]

);

 

Ķ

dwSessionHandle : [in] ϴ ŸƮ Ŵ ڵ

nFiles : [in] ϵ ϵ

rgsFilenames : [in]  Ʈ 迭 Ǯ ϳ ̴. Ķʹ nFiles 0 NULL ȴ.

nApplications : [in] ϵ μ

rgApplications : [in] RM_UNIQUE_PROCESS ü 迭. Ķʹ nApplications 0ϰ NULL ȴ

nServices : [in] ϵ

rgsServiceNames : [in] Ʈ 迭 ̴. Ķʹ nService 0 NULL ȴ.

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS
0

Լ Ϸ

ERROR_SEM_TIMEOUT
121

ŸƮ Ŵ Լ Ҵ Ƚ Ʈ mutex . ŸƮ Ŵ з ý

ŸƮ ǰ

ERROR_BAD_ARGUMENTS
160

̻ ڰ Ʋ. ŸƮ Ŵ Լ ϵǸ non-null non-zero

Ȥ 0 ڷ Ѿ´.

ERROR_WRITE_FAULT
29

Ʈ аų

ERROR_OUTOFMEMORY
14

޸𸮰 Ͽ ŸƮ Ŵ .

ERROR_INVALID_HANDLE
6

ȿ ڵ Լ ޵Ǿ. ڵ ϴ  ŸƮ Ŵ ǵ ʴ´.

 

Remarks

RmRegisterResourcesԼ ࿡ ȣ ɿ expensive ϴ.

ϴ ѹ Լ ȣ Ʈ ;ȿ ׷ ȣ϶.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 


3.3.8 RmRemoveFilter

RmAddFilterԼ Ͽ ˴ٿ̳ ׼ Ѵ.

primary ν緯 RmRemoveFilterԼ ȣ ִ.

DWORD WINAPI RmRemoveFilter(

  DWORD dwSessionHandle,

  LPCWSTR strFilename,

  RM_UNIQUE_PROCESS* Application,

  LPCWSTR strShortServiceName

);

 

Ķ

dwSessionHandle : [in] ϴ ŸƮ Ŵ ڵ

strFilename : [in, optional]  Ʈ ͷ ø̼ Ǯ ̴. RmRemoveFilterԼ ø̼ǿ ϴ RmAddFilterԼ ˴ٿ̳ ׼ Ѵ. Applicaion Ȥ strServiceShortName ĶͰ NULL ƴ ݵ NULL̾ Ѵ.

Application : [in, optional] ø̼ RM_UNIQUE_PROCESS ü. RmRemoveFilterԼ ø̼ǿ ϴ RmAddFilterԼ ˴ٿ̳ ׼ Ѵ. strFilename Ȥ strShortServiceNameĶͰ NULL ƴ ݵ NULL̾ Ѵ.

strShortServiceName : [in, optional] Ʈ ͷ  ´.

RmRemoveFilterԼ ø̼ǿ ϴ RmAddFilterԼ ˴ٿ̳ ׼ Ѵ. strFilename Ȥ Application ĶͰ NULL ƴ ݵ NULL ̾ Ѵ.

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS
0

Լ Ϸ

ERROR_FILE_NOT_FOUND
1

ã

ERROR_SESSION_CREDENTIAL_CONFLICT
1219

secondary ν緯 ȣ Ҷ Ǵ . primary ν緯 ϴ.

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 


3.3.9 RmRestart

RmShutdownԼ ˴ٿǰ, RegisterApplicationRestart ۸ ø̼̳ 񽺸 Ѵ. Լ RmStartSessionԼ ȣ ŸƮ Ŵ primaryν緯 ȣ ִ.

DWORD WINAPI RmRestart(

  DWORD dwSessionHandle,

  DWORD dwRestartFlags,

  RM_WRITE_STATUS_CALLBACK fnStatus

);

 

Ķ

dwSessionHandle : [in] ϴ ŸƮ Ŵ ص

dwRestartFlags : . ݵ 0̾ Ѵ.

fnStatus : [in] RmRestartԼ Ǵ ¸ (communite)ϱ Ǵ ޽ ݹ Լ. NULL̸ ƹ µ ʴ´.

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_REQUEST_OUT_OF_SEQUENCE

RmRestartԼ RmShutdownԼ ȣ ڵ ȣ ϵȴ.

ERROR_FAILRESTART
352

̻ ø̼ ŸƮ . RmGetListԼ ϵ Ʈ RM_PROCESS_INFOü

ERROR_SEM_TIMEOUT
121

ŸƮ Ŵ Լ Ҵ Ƚ Ʈ mutex . ŸƮ Ŵ з ý

Ʈ ǰ

ERROR_CANCELLED
1223

ڿ ҵ

ERROR_BAD_ARGUMENTS
160

̻ ڰ Ʋ. ŸƮ Ŵ Լ ϵǸ non-null non-zero

Ȥ 0 ڷ Ѿ´.

ERROR_WRITE_FAULT
29

Ʈ аų

ERROR_OUTOFMEMORY
14

޸𸮰 Ͽ ŸƮ Ŵ .

ERROR_INVALID_HANDLE
6

ȿ ڵ Լ ޵Ǿ. ڵ ϴ  ŸƮ Ŵ ǵ ʴ´.

 

Remarks

RmRestartԼ ȣ , RmGetListԼ RM_PROCESS_INFO ü Ʈ Ѵ.

ŸƮ Ŵ ٸ ڳ ͹̳ и Ѵ. LocalSystem 񽺰 Ǵ ν緯  ٸ ͹̳ ø̼ǵ ˴ٿϰų . ν緯 ٸ ǿ ˴ٿ ø̼ǿ ݵ Ŀ ޽带 Ͽ Ѵ. ޼ҵ ˴ٿ ϴ ٸ ǿ ν緯 μ Ѵ.

ܼ ø̼ ŸƮ Ŵ ˴ٿǰų Ǿ , ø̼ ο ֿܼ ȴ.

ν緯 RmShutdownԼ ϰ, ø̼̳ 񽺰 ˴ٿ ų ׻ RmRestartԼ ϴ ø̼ǰ 񽺸 Ͽ Ѵ. RmRestart Լ α Ǿ  ø̼ǵ ʴ´. ŸƮ Ŵ ˴ٿ ȴ ص ׷.

RmRestart Լ α Run As ø̼ ϸ ʴ´. ̷ ø̼ ݵ Ǿ Ѵ.

 

See Also

RegisterApplicationRestart

RmCancelCurrentTask

RmShutdown


3.3.10 RmShutdown

ø̼ ˴ٿ Ѵ. Լ RmStartSession ŸƮ Ŵ ǰ Բ ۵ ν緯 ؼ ȣ ִ..

DWORD WINAPI RmShutdown(

  DWORD dwSessionHandle,

  ULONG lActionFlags,

  RM_WRITE_STATUS_CALLBACK fnStatus

);

 

Ķ

dwSessionHandle : [in] ϴ ŸƮ Ŵ ڵ

IActionFlags : [in] Ʈ ˴ٿ ϴ ̻ RM_SHUTDOWN_TYPE ɼ. Ʒ OR Ͽ, ϵ ϵ ʴ ø̼ǰ 񽺵 ˴ٿ ֵ Ѵ.

Value

Meaning

RmForceShutdown
0x1

ø̼̳ 񽺵 Ÿ ƿ ð Ŀ ˴ٿ . ŸƮ Ŵ û ˴ٿ ø̼ 30 Ŀ ˴ٿ ȴ. (񽺴 20)

RmShutdownOnlyRegistered
0x10

RegisterApplicationRestart Լ Ͽ ŸƮ ϵ ø̼ ˴ٿ Ѵ. μ Ȥ 񽺸  μ 񽺵 ˴ٿ ʴ´.

fnStatus : [in, optional] Լ Ǵ (communite) ϴ ϴ RM_WRITE_STATUS_CALLBACKԼ . NULL̸ ƹ status ʴ´.

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.


 

Value

Meaning

ERROR_SUCCESS
0

˴ٿ, , ݹ Ϸ

ERROR_FAIL_NOACTION_REBOOT
350

ƹ ˴ٿ ׼ǵ ʾҴ.

Ѱ ̻ μ Ȥ 񽺰 ý ˴ٿ ŸƮ 䱸.

ڵ ŸƮ Ŵ ø̼ ϱ 䱸Ǿ ý ŸƮ ã Ѵ.

ERROR_FAIL_SHUTDOWN
351

ø̼ ˴ٿ . RmGetListԼ ϴ Ʈ ϰ

RM_PROCESS_INFO ü AppStatus ̴.

ERROR_CANCELLED
1223

û RmShutdownԼ ϵǴ ̴.

ERROR_SEM_TIMEOUT
121

ŸƮ Ŵ Լ Ҵ Ƚ Ʈ mutex . ŸƮ Ŵ з ý

Ʈ ǰ

ERROR_BAD_ARGUMENTS
160

Ѱ ̻ ڰ Ʋ. ŸƮ Ŵ Լ ϵǸ non-null non-zero

Ȥ 0 ڷ Ѿ´.

ERROR_WRITE_FAULT
29

Ʈ аų

ERROR_OUTOFMEMORY
14

޸𸮰 Ͽ ŸƮ Ŵ .

ERROR_INVALID_HANDLE
6

ȿ ڵ Լ ޵Ǿ. ڵ ϴ  ŸƮ Ŵ ǵ ʴ´.

 


 

Remarks

RmShutdownԼ RmGetList ȣϰ ǰ ִ, õ ִ ϵ ҽ μ Ʈ Ʈ Ѵ. ׸ RmShutdownԼ ֱٿ ߴ ҽ μ ˴ٿ õѴ.

RmShutdownԼ RmGetListԼ RM_PROCESS_INFO AppStatus Ʈ Ѵ. ŸƮ Ŵ и ٸ Ȥ ͹̳ . LocalSystem 񽺷 Ǵ ν緯 ٸ Ȥ ͹̳  ø̼ǵ ˴ٿ̳ . ν緯 ݵ ٸ ǿ Ǵ ø̼ ˴ٿ̳ ϴ Ŀ ޽带 ؾ Ѵ.

޽尡 ٸ ǿ ˴ٿ Ϸ ν緯 μ ؾ Ѵ.

ν緯 RmShutdownԼ ϰ, Ű ø̼ǰ 񽺸 ˴ٿ RmRestartԼ ׻ ø̼ǰ 񽺸 ִ.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 

See Also

RegisterApplicationRestart

RmCancelCurrentTask

RmRestart


3.3.11 RmStartSession

ο ŸƮ Ŵ Ѵ. ð ýۿ ִ 64 ŸƮ Ŵ Maximum̴. Լ ŸƮ Ŵ API ķ ȣϱ ڵ Ű Ѵ.

DWORD WINAPI RmStartSession(

  DWORD* pSessionHandle,

  DWORD dwSessionFlags,

  WCHAR strSessionKey[CCH_RM_SESSION_KEY+1]

);

 

Ķ

pSeesionHandle : [out] ŸƮ Ŵ ڵ . ڵ ȣǴ ŸƮ Ŵ API ȣ⿡ ޵ȴ.

dwSessionFlags : . Ķʹ 0̾ Ѵ.

strSessionKey : [in, out] ڷ ο Ű ´. Ʈ RmStartSessionԼ ȣϱ Ҵ Ǿ Ѵ.

 

ϰ

ֱ ޴´. Լ Winerror.h system error codes ϳ Ѵ.

Value

Meaning

ERROR_SUCCESS
0

Լ Ϸ

ERROR_SEM_TIMEOUT
121

ŸƮ Ŵ Լ Ҵ Ƚ Ʈ mutex . ŸƮ Ŵ з ý

Ʈ ǰ

ERROR_BAD_ARGUMENTS
160

Ѱ ̻ ڰ Ʋ. ŸƮ Ŵ Լ ϵǸ non-null non-zero

Ȥ 0 ڷ Ѿ´.

ERROR_MAX_SESSIONS_REACHED
353

ƽ ߴ.

ERROR_WRITE_FAULT
29

Ʈ аų .

ERROR_OUTOFMEMORY
14

޸𸮰 Ͽ ŸƮ Ŵ .

 

Remarks

RmStartSessionԼ ǿ ̹ Ű ϸ Ѵ.

RmStartSessionԼ UI Ʈ ϰų Ʈ sequence of multiple patches ġ Ʈ primary ν緯 ȣ Ǿ Ѵ.

secondary ν緯 RmJoinSessionԼκ , ϴ ŸƮ Ŵ ׸ primary ν緯  RmStartSession Լ ݷ ڵ Ű (join) ִ.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

Library

Use Rstrtmgr.lib.

DLL

Requires Rstrtmgr.dll.

 

See Also

RmEndSession

RmJoinSession


3.4 ü(Structures)

 

ŸƮ Ŵ API Ʒ ü Ѵ.

RM_FILTER_INFO

RM_PROCESS_INFO

RM_UNIQUE_PROCESS


3.4.1 RM_FILTER_INFO

Ȥ ˴ٿ ׼ ϰ ִ. RmAddFilter, RmRemoveFilter, ׸ RmGetFilterList Լ , ŸƮ Ŵ ǰ Բ ϵ ø̼̳ 񽺵 ߰, ׸ Ѵ.

typedef struct _RM_FILTER_INFO {
  RM_FILTER_ACTION FilterAction;
  RM_FILTER_TRIGGER FilterTrigger;
  DWORD cbNextOffset;
  LPWSTR strFilename;
  RM_UNIQUE_PROCESS Process;
  LPWSTR strServiceShortName;

} RM_FILTER_INFO,
 *PRM_FILTER_INFO;

FilterAction

RM_FILTER_ACTION ϰ ִ. RmNoRestart Ͽ ø̼̳ ϸ, RmNoShutdown Ͽ ø̼̳ ˴ٿ Ѵ.

FilterTrigger

RM_FILTER_TRIGGER ϰ ִ. RmFilterTriggerFile Ͽ Ǯ θ ø̼ ̳ ˴ٿ ׼ ϰ, RmFilterTriggerProcess RM_UNIQUE_PROCESSü Ͽ ø̼ ̳ ˴ٿ ׼ ϸ, RmFilterTriggerService  Ͽ ̳ ˴ٿ ׼ Ѵ.

cbNextOffset

ü Ʈ

strFilename

FilterTrigger RmFilterTriggerFile̸ ø̼ ϳ Ʈ ´.

Process

FilterTrigger RmFilterTriggerProcess̸ ø̼Ǹ RM_PROCESS_INFO ü̴.

strServiceShortName

FilterTrigger RmFilterTriggerService ̸  Ʈ ̴.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

See Also

RmGetFilterList

RM_FILTER_TRIGGER


3.4.2 RM_PROCESS_INFO

ŸƮ Ŵ Բ ϵǾ ø̼ Ѵ.

typedef struct {
  RM_UNIQUE_PROCESS Process;
  WCHAR strAppName[CCH_RM_MAX_APP_NAME+1];
  WCHAR strServiceShortName[CCH_RM_MAX_SVC_NAME+1];
  RM_APP_TYPE ApplicationType;
  ULONG AppStatus;
  DWORD TSSessionId;
  BOOL bRestartable;

} RM_PROCESS_INFO;

 

Process

ø̼ PID μ ð ϰ ִ RM_UNIQUE_PROCESS ü ´.

strAppName

μ ̸ Ķʹ 񽺸 long name ϰ, μ 񽺰 ƴϸ Ķʹ ø̼ 鸮 Ѵ. μ critical process̰, ν緯 µ ѿ Ǹ Ķʹ critical process ϸ ϰ μ critical process̰ ν緯 񽺷 Ǹ Ķʹ critical process long name Ѵ.

strServiceShortName

  μ ̰, 񽺰 ƴ ʴ´.

ApplicationType

RmUnknownApp, RmMainWindow, RmOtherWindow, RmService, RmExplorer Ȥ RmCritical ø̼ Ÿ RM_APP_TYPE Ѵ.

AppStatus

ø̼ ¸ ϴ Ʈ ũ Ѵ. RM_APP_STATUS ڸ

TSSessionId

μ ͹̳ ID Ѵ. RM_INVALID_SESSION(-1) Ǹ μ ͹̳ . μ ̰ų system critical process̸ ʴ´.


 

bRestartable

ø̼ ŸƮ Ŵ ŸƮ TRUE ϰ, ϶ FALSE Ѵ.

μ ׻ TRUE Ѵ.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 

See Also

RM_APP_TYPE

RM_FILTER_INFO

RM_UNIQUE_PROCESS

RmGetList

RmRestart

RmShutdown


3.4.3 RM_UNIQUE_PROCESS

μ ð PID ϰ ĺ μ.

RM_UNIQUE_PROCESS ü 迭 RmRegisterResourcesԼ ޵ ִ.

typedef struct {
  DWORD dwProcessId;
  FILETIME ProcessStartTime;

} RM_UNIQUE_PROCESS,
 *PRM_UNIQUE_PROCESS;

 

dwProcessId

δƮ ĺ(PID)

 

ProcessStartTime

μ ð. GetProcessTimesԼ lpCreationTime ĶͿ Ǵ FILETIME ü Ǵ ð

 

Remarks

RM_UNIQUE_PROCESS ü RM_PROCESS_INFO ü RmRegisterResourcesԼ ŸƮ Ŵ ǰ Բ ϵ, ø̼ ĺڷ ִ.

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in RestartManager.h.

 


#÷ 1

WM_QUERYENDSESSION

WM_QUERYENDSESSION ڰ ϰų ý Լ ø̼ ȣ ޽̴. ø̼ 0 ϸ ʴ´. ø̼ 0 ϴ ý WM_QUERYENDSESSION޽ ⸦ . ޽ ó ý WM_ENDSESSION޽ WM_QUERYENDSESSION޽ wParam ĶͿ Բ .

ڽ WindowProcԼ ޽ ޴´.

LRESULT CALLBACK WindowProc(

  HWND hwnd,       // handle to window

  UINT uMsg,       // message identifier

  WPARAM wParam,   // not used

  LPARAM lParam    // logoff option

);

 

Ķ

hwnd

ڵ

uMsg

WM_QUERYENDSESSION ĺ

wParam

Ǿ ִ Ķ

lParam

Ʒ Ѱ ̻ ִ. ĶͰ 0ϰ ý ˴ٿ ǰų ۵ȴ. ( ̺Ʈ ߻ߴ ϴ Ұϴ)

Value

Meaning

ENDSESSION_CLOSEAPP
0x1

ø̼ üǾ ϰ ְų ý 񽺵ǰ ֵ Ȥ ý ҽ Ǿ. ڼ Guidelines for Application ϶.

ENDSESSION_LOGOFF
0x80000000

α׿ ߴ. ڼ Logging Off ϶.

Ķʹ bit mask ϶. ׽Ʈ bit ϸ, equality ׽Ʈ .

lParam

ĶͰ 0 , ý ˴ٿ ǰų ۵ȴ. ( ̺Ʈ ߻ߴ ϴ Ұϴ.)

 

ϰ

ø̼ ϰ TRUE .

DefWindowProcԼ ޽ TRUE Ѵ.

ٿ ִ ý̳ ̵ ø̼ FALSE ִ. ׼ .

 

Remarks

ø̼ TRUE WM_ENDSESSION ޽ ޴´. ٸ ø̼ WM_QUERYENDSESSION ޽  Ұ ʴ´.

ø̼ ޽ TRUE FALSE Ѵ. ׸ WM_ENDSESSION޽ Ŭ Ѵ.

 

ܼ ø̼ SetConsoleCtrlHandlerԼ Ͽ ˴ٿ ִ.

ø̼ RegisterServiceCtrlHandlerExԼ Ͽ ڵ ƾ ˴ٿ ִ.

ڵ

Logging Off ϶.

Requirements

Client

Requires Windows Vista, Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.

Server

Requires Windows Server "Longhorn", Windows Server 2003, Windows 2000 Server, or Windows NT Server.

Header

Declared in Winuser.h; include Windows.h.

See Also

Logging Off
Shutting Down
DefWindowProc
ExitWindows
SetProcessShutdownParameters
WM_ENDSESSION


#÷ 2

Logging Off

ExitWindowsԼ ڸ α Ѵ. EWX_LOGOFF÷׸ ϿExitWindowsExԼ ϴ ִ.

 

⺻ ø̼ ExitWindow ExitWindowsEx Ͽ α׿ , ý WM_QUERYENDSESSION޽ ش .

ø̼ ޽ TRUE Ͽ Ḧ ³Ѵ. ø̼ ޽ ó FALSE Ѵٸ, α ҵȴ.

ø̼ WM_QUERYENDSESSION޽ ڵ鸵 Ѵٸ ٸ ø̼̳ ý û Ѵٰ ص α׿ ϵ ִ. ڼ How to log Off the Current User ϶.

 

ø̼ WM_QUERYENDSESSION TRUE , WM_ENDSESSION޽ ޴´. ׸ ٸ ø̼ WM_QUERYENDSESSION޽  ϴ° ڽ ȴ..

 

        Windows Me/98/95 : ø̼ WM_QUERYENDSESSION TRUE WM_ENDSESSION ް ȴ.

 

ø̼ Ϸ EXW_FORCE÷׸ Ͽ ExitWindowsEx Ѵ. ̰ ý WM_QUERYENDSESSION޽ ϵ Ѵ.

 

ý α׿ ɰ ó CTRL_LOGOFF_EVENT Ʈ ȣ ִ. ܼ ø̼ ޽ ó HandlerRoutine ִ.

 

ExitWindowsEx ȣ μ α ȭâ ǰ ִٸ

α׿ μ ȴ.

þ ExitWindowsEx ȣ μ ٸ α׿ ǿ ǰ ִٸ ⸸ Ѵ.  μ ʴ´.

 


#÷ 3

ڸ α׿ϱ(How to Log Off the Current User)

 

Ʒ ڵ ExitWindowsԼ Ͽ ڸ α׿ ϴ ̴.

// Log off the current user.

 

ExitWindows(0, 0);

ø̼ WM_QUERYENDSESSION޽ ް, ̾α ڽ θ ´. ڰ YES Ŭϸ ý ڸ α ϸ, No Ŭϸ α׿ ϰ ȴ.

// Process the message in the window procedure.

 

case WM_QUERYENDSESSION: 

{

    int r;

    r = MessageBox(NULL, "End the session?", "WM_QUERYENDSESSION", MB_YESNO);

 

    // Return TRUE to continue, FALSE to stop.

 

    return r == IDYES;

    break;

}

See Also

Logging Off


#÷ 3

RegisterApplicationRestart

ø̼ Ȱ νϽ Ѵ.

HRESULT WINAPI RegisterApplicationRestart(

  PCWSTR pwzCommandline,

  DWORD dwFlags

);

 

Ķ

pwzCommandline

[in, optional] ø̼ command line ڵ Ʈ .

Command line (Ȯ?) (Լ ٿش). Command line ƽø ũ RESTART_MAX_CMD_LINE ִ. Ķʹ NULL̳ ڿ ϼ ִ.

dwFlags

[in] Ķʹ 0̳ 1̻ Ʒ ´.

Value

Meaning

RESTART_NO_CRASH
1

ø̼ crash ȴٸ μ ʴ´.

RESTART_NO_HANG
2

ø̼ hang ȴٸ μ ʴ´.

RESTART_NO_PATCH
4

Ʈ ġ ȴٸ μ ʴ´.

RESTART_NO_REBOOT
8

ý Ǿٸ μ ʴ´.

ϰ

This function returns S_OK on success or one of the following error codes.

S_OK Ѵ. ڵ Ʒ

E_FAIL
E_INVALIDARG

 

Remarks

Լ ȣ ø̼ crashes hangs̸ ۵ȴ.

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in Winrecovery.h; include Windows.h.

Library

Use Kernel32.lib.

DLL

Requires Kernel32.dll.

See Also

UnregisterApplicationRestart


#÷ 4

UnregisterApplicationRestart

 

Ʈ ø̼ Ȱ νϽ Ѵ.

 

HRESULT WINAPI UnregisterApplicationRestart(void);

Parameters

ĶͰ .

Return Value

S_OK Ѵ. ڵ Ʒ

E_FAIL

 

Requirements

Client

Requires Windows Vista.

Server

Requires Windows Server "Longhorn".

Header

Declared in Winrecovery.h; include Windows.h.

Library

Use Kernel32.lib.

DLL

Requires Kernel32.dll.

See Also

RegisterApplicationRestart


#÷ 5

Shutting Down

Ȥ Ʈ ǻ ø̼ ˴ٿ ϴ Ʒ 3 ִ.

  • ý ˴ٿ (shut down the system)
  • ý (shut down the system and restart it)
  • ø̼ ˴ٿ, ˴ٿ ý , ׸ ŸƮ ϵ ø̼ (shut down the application, shut down and restart the system, and restart any applications that have been registered for restart)

 

ý ˴ٿ ϱ EWX_SHUTDOWN ÷װ õ ExitWindowsExԼ Ѵ. ڼ How to Shut Down the System ϶.

ý EWX_REBOOT÷׸ ϰ, RegisterApplicationRestartԼ ŸƮ Ǿ ϵ ø̼ ϱ ؼ EXW_RESTARTAPPS ÷׸ Ѵ.

InitiateShutdown, InitiateSystemShutdown InitiateSystemShutdownExԼ α׿ Ʈ ֱ ̾α׿ Ÿ̸Ӹ Ѵ.

̾αװ ִ AbortSystemShutdownԼ Ÿ̸Ӹ ߰ ǻͰ ˴ٿ Ǵ ִ. Ÿ̸Ӱ expireǸ ǻʹ ˴ٿ ȴ. Լ ˴ٿ ɿ 󼭵 ǻ͸ ִ. ڼ Displaying the Shutdown Dialog Box ϶.

 

˴ٿ

 

޽ť ø̼ WM_QUERYENDSESSION WM_ENDSESSION޽ ˴ٿ ޴´. ̵ ø̼ TRUE Ų. ø̼ ʿ ̻ ý ˴ٿ .

ø̼ WM_ENDSESSION ó ߿ 䱸Ǿ Ŭ ؾ Ѵ. ͸ ø̼ temporary ġ ͸ ְ ø̼ ۵ Ǿ. ϰ ø̼ ͳ   õѴ. ˴ٿÿ Ǿ ̱ ڿ ۵ ڵ ִ.(?)
ܼ ø̼ handler routines ˴ٿ ޴´. ܼ ڵ鷯 ϱ SetConsoleCtrlHandlerԼ Ѵ.

ø̼ handler routines ˴ٿ ޴´. Ʈ ڵ鷯 ϱ RegisterServiceCtrlHandlerExԼ Ѵ.

˴ٿ (Blocking Shutdown)

 

ø̼ ߿ ý ˴ٿ ƾ Ѵٸ ShutdownBlockReasonCreateԼ ȣ ִ. ȣڴ ڿ ÷ ؾ ڿ ؾ Ѵ.

ڿ ˴ٿ ؼ ý ˴ٿ ϱ ʿ Ѿ Ѵ.

 

See Also

How to Shut Down the System


#÷ 6

 

How to Shut Down the System

Ʒ ExitWindowExԼ Ͽ ý ˴ٿ Ѵ. ˴ٿ ۸ ũ ű ũ ǻ͸ ְ Ѵ.

ø̼ ݵ SE_SHUTDOWN_NAME ؾ Ѵ.

ڼ Privilegs ϶.

BOOL MySystemShutdown()

{

   HANDLE hToken;

   TOKEN_PRIVILEGES tkp;

 

   // Get a token for this process.

 

   if (!OpenProcessToken(GetCurrentProcess(),

        TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))

      return( FALSE );

 

   // Get the LUID for the shutdown privilege.

 

   LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,

        &tkp.Privileges[0].Luid);

 

   tkp.PrivilegeCount = 1;  // one privilege to set   

   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

 

   // Get the shutdown privilege for this process.

 

   AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,

        (PTOKEN_PRIVILEGES)NULL, 0);

 

   if (GetLastError() != ERROR_SUCCESS)

      return FALSE;

 

   // Shut down the system and force all applications to close.

 

   if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,

               SHTDN_REASON_MAJOR_OPERATINGSYSTEM |

               SHTDN_REASON_MINOR_UPGRADE |

               SHTDN_REASON_FLAG_PLANNED))

      return FALSE;

 

   return TRUE;

}

 

ȣ ExitWindowsEx Լ Ķʹ ý OS Ʈ Ǿ Ų. ڼ System Shutdown Reason Codes ϶.

 

See Also

Shutting Down

 

ڸƮ
        ñ   ȭ      ְ   ħ   ù   β  
* ڸƮ 500 ̳( ) ּ.
     ô  ȸ my Mblog >> ũ ־ΰ  ٷ   ֽϴ.  

 Ʈ(dExpert)
9,000
10,000
15,000
10,000
15,000
15,000
13,000
5,000
3,000
27,000
9,000
15,000
30,000
9,000
ȸҰ  |   ޹ħ  |  ޹  |     |   E-Mail ܼź  |     |   ̿ȳ  |   ݰ꼭
ŷȸ 2000-1ȣ ڵϹȣ ȳ: 220-81-90008 / ǥ: ȫ
ﵿ 662-18 ڷǾƺ 9 / TEL. 02_511_4824 / FAX. 02_511_4823
Copyright () Ǿ. All rights reserved.