, Ͻñ ٶϴ.
-
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 Ʒ ǥ ݹ Լ Ѵ.
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 Ʒ ̺ ĺ Լ Ѵ.
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