מה Fast Startup באמת עושה — למה "Shut down" ב-Windows אינו אותו דבר כמו Restart

· עודכן בתאריך: · · Windows, Fast Startup, Shutdown, ניהול צריכת חשמל, מערכות מידע, מחשב ציוד, PowerShell, פיתוח Windows

היסטוריית עדכונים (גרסה ראשונה, פורסמה בתאריך 4 Sep 2026)
פרסום ראשון

“כיביתי והדלקתי את החשמל מחדש, אבל המדפסת לא מזוהה. אחר כך עשיתי restart, וזה עבד.”

המפתח להבנת ההבדל הזה הוא Fast Startup של Windows. מאז Windows 8, במחשב שתומך ב-hibernation והיכולת הזו מופעלת, “Shut down” אינו פעולה שבונה מחדש את כל מצב Windows. הוא סוגר אפליקציות ואת session המשתמש, אבל שומר את מצב ה-kernel, ה-drivers וה-services ומשחזר אותו באתחול הבא. זה נקרא hybrid shutdown.12

לעומת זאת, “Restart” תמיד מבצע מחזור full boot, בלי קשר להגדרת Fast Startup. “כיבוי והדלקה מחדש” ו-“restart” אינם אותה פעולה.1

המאמר מראה קודם איך לבחור את הפעולה הנכונה, ואז עובר לסיבות, לבידוד לפי תסמין, לאימות, ולהחלטה על שינוי הגדרות. הערות מימוש ל-APIs ול-Windows services מרוכזות בפרק 7. הקוראים המיועדים הם אנשי IT שמנהלים Windows 10/11 ומפתחי אפליקציות Windows למחשבי ציוד ולמכונות בדיקה. PowerShell 5.1 ואילך משמש לבדיקה ולהגדרה.

1. קודם המסקנה: בוחרים את הפעולה שמתאימה למטרה

לפני שכובים Fast Startup לגמרי, מפרידים מה מנסים לעשות.

מטרה או בעיה פעולה או תגובה לנסות קודם פירוט
לבודד בעיה, או לאפס פעם אחת את מצב Windows Restart. אבל לא מסיקים את הסיבה רק כי זה תיקן 3.1, 4.1
לסיים את Windows לגמרי וגם לנתק חשמל מריצים shutdown /s /t 0 3.2
לסיים עדכונים שממתינים בוחרים “Update and restart” 4.3
להעיר את המחשב בלילה עם Wake on LAN בוחנים מחדש את מצב ההמתנה, לא אם Fast Startup דולק או כבוי 4.4
שכל “shutdown” יאתחל את המכונה בודקים את תפקיד המכונה, ואז שוקלים כיבוי Fast Startup פרק 6

הבסיס לבחירה הזו הוא שלושת ההבדלים הבאים.134

שלוש פעולות תפריט החשמל ומה קורה בפועלShut down הוא hybrid shutdown כברירת מחדל ושומר את ה-kernel לקובץ ה-hibernation. Restart תמיד מבצע מחזור full boot. Hibernate שומר גם את session המשתמש לקובץ ה-hibernation.Shut downHybrid shutdown (ברירת מחדל)שמירת ה-kernel לקובץ ה-hibernationRestartמחזור full bootבנייה מחדש של kernel, drivers ו-servicesHibernateHibernation (S4)שמירת כל הזיכרון

איור 1: “Shut down” שומר את המצב; “Restart” בונה מחדש את המצב בצד Windows. hibernation רגיל שומר גם את session המשתמש. גם restart אינו מנתק חשמל להתקנים המחוברים.

“לאפס פעם אחת” ו”לשנות איך מכבים בכל פעם” הן החלטות נפרדות. למחשבים ניידים עסקיים רגילים, הבחירה המעשית היא להשאיר דולק ולעשות restart כשצריך. גם Microsoft אינה ממליצה לכבות Fast Startup באופן גורף.1

ב-diagram, solid line מציינת relation שתמיד מתקיים ו-dashed line מציינת relation מותנה (התנאים מופיעים בהסבר של כל relation ב-detail page). הרשימה המלאה של ה-relations (סה”כ 24, כולל evidence ו-certainty) וההגדרות של ה-concepts המרכזיים נמצאות ב-detail page של ה-knowledge map (ביפנית). Data: JSON-LD / Turtle

2. איך זה עובד: Windows “משחזר” את מצבו במקום לבנות אותו מחדש

2.1 איפה זה מתפצל מ-full shutdown

ל-Windows יש שלושה מצבי אתחול: cold boot מסורתי, resume מ-hibernation, ו-Fast Startup שהוצג ב-Windows 8. ב-cold boot, ה-boot loader טוען את ה-kernel לזיכרון ומקשר אותו, וה-kernel מגדיר את הליבה, מונה את ההתקנים המחוברים וטוען drivers. Fast Startup במקום זה קורא בחזרה את המצב שכבר אותחל מקובץ ה-hibernation.5

ההכנה לקריאה בחזרה קורה ב-shutdown הקודם. עד סגירת אפליקציות ו-sign-out של כל המשתמשים, זה זהה ל-full shutdown. אחר כך הנתיבים מתפצלים.51

שלב Full shutdown Hybrid shutdown
אפליקציות ו-sessions של משתמש סוגרים אפליקציות ועושים sign-out לכל המשתמשים אותו דבר
Session של ה-kernel נסגר לא נסגר; נכנס ל-hibernation
עיבוד לפני ניתוק החשמל מכבים את המערכת שולחים ל-drivers את ה-power IRP להכנה ל-hibernation, ושומרים את תמונת הזיכרון, כולל kernel-mode drivers, ל-hiberfil.sys
בהדלקה הבאה מאתחלים kernel, drivers וכן הלאה קוראים בחזרה את המצב השמור וממשיכים

גם מה ש-drivers מקבלים אינו הודעת shutdown אלא power IRP שמכריז על מעבר ל-hibernation. אף על פי שזה נראה כמו כיבוי למשתמש, ליבת Windows אינה מסתיימת; היא נשמרת עד האתחול הבא.5

2.2 מה נשמר ומה נסגר

הגבול עובר בין sessions של המשתמש (ה-sessions האינטראקטיביים, Session 1 ואילך) לבין session של ה-kernel (Session 0).62

פריט טיפול בזמן hybrid shutdown
אפליקציות פתוחות, מצב sign-in מסתיימים כש-session המשתמש יוצא ב-sign-out
Services לפי משתמש נעצרים ונמחקים ב-sign-out
ה-kernel ו-kernel-mode drivers שנטענו המצב נשמר לקובץ ה-hibernation ומשחזר באתחול הבא
System services של Session 0 לא נעצרים ומתחילים מחדש; נכנסים ל-hibernation ומשחזרים עם מצבם

Services לפי משתמש ו-services של Session 0 שניהם “services”, אבל מטופלים אחרת. הראשונים נוצרים ב-sign-in ונעצרים ונמחקים ב-sign-out, ולכן אינם נשמרים.7

בצד שנשמר, לעומת זאת, נשארים מצב פנימי של drivers ו-handles, זיכרון ו-caches פנימיים ש-system services מחזיקים. גם תיעוד החומרה של Microsoft מסביר שכי ה-kernel, ה-drivers וה-services נשמרים ומשחזרים במקום לעבור restart, ה-uptime בין restart-ים של ה-kernel יכול להיות ארוך מגרסאות Windows קודמות, ומבקש לנטר memory leaks ב-drivers וב-services.2

2.3 איך זה שונה מ-hibernation רגיל

Hibernation רגיל שומר את כל הזיכרון, כולל sessions של המשתמש. Fast Startup קודם עושה sign-out למשתמשים ואז שומר. זה מקטין את קובץ ה-hibernation ומאיץ גם את הכתיבה וגם את הקריאה בחזרה.26

במונחי מצבי חשמל, full shutdown הוא S5 ו-hibernation הוא S4. Hybrid shutdown נראה כמו S5 למשתמש אבל בפועל עובר דרך S4. עם זאת, התגובה לאזעקות wake של התקנים מטופלת כאילו המערכת ב-S5. אף על פי שזה אותו S4, לא הכול מתנהג כמו ב-hibernation רגיל, וההבדל הזה חשוב ל-Wake on LAN ב-4.4.6

2.4 האתחול הבא “ממשיך” במקום “מאתחל”

אתחול מ-Fast Startup מתקדם בסדר הזה: אתחול firmware, קריאת קובץ ה-hibernation, resume של התקנים, resume של Winlogon, ואתחול Explorer. קובץ ה-hibernation מחזיק את הקשר המערכתי שנכתב ב-shutdown.8

מה שחשוב כאן הוא שההתקנים עוברים resume, לא אתחול. אם driver החזיק פנימית מצב רע, כמו ציוד היקפי שלא מזוהה או התקן USB שלא מגיב אחרי resume, המצב הזה יכול להישמר גם כן.

“Restart” אינו משתמש בנתיב השמירה-והשחזור הזה; הוא תמיד עובר full boot. הסיבה ש-restart נדרש אחרי התקנת driver, או אחרי עדכון רכיבי Windows שאי אפשר להחליף בלי restart מלא, היא בדיוק לבנות מחדש את המצב בצד Windows.1

3. איפוס או full shutdown בלי לשנות הגדרות

3.1 כדי לאפס ולהמשיך להשתמש במחשב: “Restart”

כדי לבודד בעיה, או להחזיר את Windows למצב נקי פעם אחת, בוחרים “Restart” מתפריט החשמל. כי זה אינו תלוי בהגדרת Fast Startup, זו גם הפעולה האמינה לכתוב בנוהלים.1

שימו לב, עם זאת, ש-restart הוא מחזור full boot, לא פעולה שמשאירה את המחשב כבוי (S5). כשצריך לסיים את Windows לגמרי ולנתק חשמל, למשל לפני טיפול בדיסק מ-OS אחר, משתמשים בשיטה הבאה.

3.2 כדי לנתק גם חשמל: shutdown /s /t 0

שומרים את העבודה, ואז מריצים את הפקודה הבאה.

shutdown /s /t 0

ה-/s של Shutdown.exe הוא full shutdown כברירת מחדל. משלבים /hybrid עם /s רק כשרוצים hybrid shutdown. ל-“Shut down” של תפריט החשמל ול-/s של הפקודה יש התנהגות ברירת מחדל שונה.19

ברצף shutdown של מחשב ציוד או ב-batch file, הפקודה הזו הופכת את הכוונה, “לסיים לגמרי ולנתק חשמל”, לחד-משמעית. שימו לב ש-/g עושה full shutdown ואז restart, וממשיך אפליקציות רשומות אם Automatic Restart Sign-On (ARSO) מופעל; זו אינה אפשרות להישאר כבוי.9

3.3 שיטת מקש Shift, וקריאה מאפליקציה

בחירת “Shut down” תוך החזקת מקש Shift מבצעת full shutdown לפעם הזו בלבד. עם זאת, הנוהל הזה מתואר בתשובת תמיכה ב-Microsoft Q&A, לא במקור רשמי. אם משתמשים בו בתפעול, מאמתים את התוצאה עם ה-uptime או Event 27 שמתוארים בפרק 5; לנוהלים שפונים למשתמש, “Restart” או shutdown /s /t 0 היא הבחירה הבטוחה יותר מבחינת אמינות.10

אפליקציה יכולה גם לבצע full shutdown דרך ה-API, למשל בקריאה ל-InitiateSystemShutdownEx עם bRebootAfterShutdown מוגדר ל-FALSE. הדגלים לכל API, ההבדל בין ניתוק חשמל ל-restart, וההרשאה הנדרשת מסוכמים בפרק 7.11

4. בידוד הסיבה לפי תסמין

המנגנון שתואר עד כאן מסביר uptime ובעיות שנשמרות. אבל לא מניחים שהתסמין מולכם נגרם מ-Fast Startup. Wake on LAN בפרט צריך בידוד כאילוץ נפרד.

4.1 Shutdown לא מתקן, אבל Restart כן

הדבר הראשון לעשות הוא לבדוק אם הבעיה משתחזרת אחרי restart. אם היא נעלמת אחרי restart, ההשערה שמצב שנשמר ב-driver או ב-service הוא הסיבה מתחזקת.

זה אינו מאושר, עם זאת, רק כי restart תיקן. בעיה לסירוגין פשוט אולי לא הופיעה, או שה-restart השלים עדכון שהמתין. לפני שמתייחסים לזה כסיבה, משיגים את האימות הבא.

  1. מאשרים כמה פעמים ש”זה משתחזר אחרי shutdown ולא משתחזר אחרי restart”.
  2. מאשרים עם Kernel-Boot Event 27 שמתואר בפרק 5 שהאתחול האחרון היה Fast Startup (0x1).
  3. משווים מול רישומים בצד ה-driver ב-Device Manager ובלוג System.

גם אחרי אימות, אין צורך לשנות את ההגדרה בכל מכונה מיד. ברוב המקרים, תיקון הנוהל מ-“כיבוי והדלקה מחדש” ל-“restart” מספיק. האם מכונה צריכה אתחול מובטח בכל shutdown מחליטים בפרק 6.

כש-shutdown עצמו נכשל וחוזר למסך הנעילה, נדרשת בדיקה אחרת. Shutdown עם Fast Startup מופעל רץ כ-hibernation, ובאמצע הוא מאתחל את תצורת memory dump. אם לא ניתן לטעון את dump filter driver, ה-hibernation נכשל, Event ID 45 נרשם, והמערכת חוזרת למסך הנעילה. המקום ש-Microsoft מפנה אליו הוא DumpFilters תחת HKLM\SYSTEM\CurrentControlSet\Control\CrashControl. התייחסות לתסמין הזה כ”כשל hibernation” ולא כ”כשל shutdown” מבהירה איפה לבדוק.1

4.2 Uptime לא מתאפס אף שמכבים כל לילה

“Performance” > “CPU” ב-Task Manager לפעמים מציג uptime של ימים רבים. ב-hybrid shutdown ה-kernel רק נכנס ל-hibernation ומשחזר, כך שזמן האתחול של ה-kernel אינו מתעדכן.2

ב-WMI, uptime מתקבל מ-Win32_OperatingSystem.LastBootUpTime על ידי חיסור זמן האתחול מהזמן הנוכחי. Restart, שעובר full boot, ואתחול אחרי full shutdown מעדכנים את זמן האתחול הייחוס הזה.12

Get-Uptime ב-PowerShell 6 ואילך משתמש במונה ticks של טיימר ברזולוציה גבוהה מאז תחילת המערכת. לכן ערכו יכול להיבדל מעט מזה שנגזר מ-WMI, אבל הוא זהה בכך שהוא לוקח את אתחול ה-kernel כייחוס.13

לא מסיקים לא תקלה ולא Fast Startup מ-uptime ארוך לבדו. Uptime נשמר גם ב-sleep, ב-hibernation מפורש, וב-shutdown שלא הסתיים. בודקים Event 27 ואת רשומות הלוג סביבו לפני שמסבירים.

וגם, ניטור כמו “לבקש restart כש-uptime עובר 30 יום” יזהיר משתמשים שמכבים כל יום. הניטור אינו שגוי. ניסוח ההודעה כ”נא לעשות restart” נמנע מהבלבול של “אבל כיביתי אמש”.

4.3 עדכונים לא מסתיימים גם אחרי “Update and shut down”

כדי לסיים עדכון, בוחרים “Update and restart”. מאמר התמיכה של Microsoft (KB4011287) מסביר שחלק מהעדכונים יכולים להסתיים רק באתחול שאחרי full shutdown, ועשויים להישאר ממתינים כשהאתחול עובר דרך hibernation של Fast Startup. ההתנהגות הזו אינה מתרחשת עם restart.3

כש”Updating” מופיע שוב בבוקר אחרי “Update and shut down”, בדרך כלל זה אינו כשל עדכון; העיבוד שהמתין ל-full boot פשוט מתקדם באתחול הזה. אם Fast Startup כבוי, גם “Update and shut down” עובר full boot, כך שההנחה משתנה.

אותו מאמר תמיכה גם מציין שההשהיה בהשלמת עדכונים בסביבות שמנוהלות ב-Configuration Manager טופלה ב-Configuration Manager 2002 וב-Windows 10 21H1.3

4.4 Wake on LAN לא יכול להעיר מחשב שכובה

כיבוי Fast Startup לבדו אינו פותר את הבעיה הזו. ב-Windows 10/11, Wake on LAN (WOL) ככל שנוגע ל-Windows אינו נתמך לא מ-hybrid shutdown ולא מ-full shutdown (S5).414

מצב המתנה טיפול WOL ככל שנוגע ל-Windows
Sleep מסורתי (S3) נתיב נתמך. תלוי ב-NIC ובהגדרות wake, עם זאת
Hibernation (S4) שהמשתמש בחר במפורש נתיב נתמך. תלוי ב-NIC ובהגדרות wake, עם זאת
Hybrid shutdown (בפועל S4) ה-NIC אינו מוכן ל-wake; לא נתמך
Full shutdown (S5) לא נתמך
Modern Standby (S0 low-power idle) הרשת יכולה להיות מקור wake, אבל צריך לבדוק דגם ותנאי חשמל

אף על פי ששניהם S4, Windows מטפל ב-“Hibernate” וב-“Shut down” אחרת. לפי ההסבר של Microsoft, משתמש שמורה על shutdown מצפה לצריכת חשמל אפס, ולכן Windows אינו מכין את ה-NIC ל-wake במעבר ל-hybrid shutdown. הכיבוי הזה אינו מבוצע במעבר ל-hibernation מפורש.4

גם ב-Windows 7, WOL מ-full shutdown ברירת המחדל (S5) לא היה נתמך רשמית. היו, עם זאת, דגמים שבהם ה-NIC נשאר מוכן ל-wake אם נשאר חשמל שיורי. ההבדל מ-hybrid shutdown ברירת המחדל של Windows 10 הוא ש-Windows מכבה wake במפורש.4

לא ניתן להכליל מכונות Modern Standby כ”תמיד מתעוררות כל עוד הן ישנות”. דגם שמציג “S0 Low Power Idle” ב-powercfg /a אין לו S3. ב-Modern Standby המערכת ממשיכה לרוץ בהספק נמוך גם כשהמסך כבוי, ו-Wi-Fi, Ethernet ו-mobile broadband שומרים על החיבורים ויכולים להיות מקורות wake. התיעוד של Microsoft גם מציין ש-Remote Desktop ושיתוף קבצים יכולים להעיר את ה-SoC דרך חיבור Ethernet.15

אותו תיעוד, עם זאת, גם מפרט את התנאים הבאים.15

  • ב-disconnected standby אפליקציות לא יכולות להשתמש ברשת, ובסוללה מחסנית הרשת עשויה להתחיל להתנתק.
  • LAN קווי אינו כשיר כ-Modern Standby capable אלא אם הוא תומך ב-pattern-match offload.
  • ב-Windows 11 גרסה 24H2 ואילך, מקורות wake רבים כבויים כשמזוהה ניקוז סוללה מוגזם.

ב-Surface, WOL בזמן Modern Standby מצוין כעובד כברירת מחדל מאז Windows 10 גרסה 1607, אבל זו אינה הבטחה למחשבים ניידים מיצרנים אחרים. האם PC באמת ניתן להעיר נקבע לפי ה-NIC, ה-firmware, תנאי החשמל AC/DC, והמימוש של ה-OEM, לכן מאמתים במכונה אמיתית לפני שבונים את זה לתפעול ללא השגחה כמו משימות לילה.16

יש גם דגמים שה-firmware והחומרה שלהם יכולים להכין את ה-NIC ל-wake מ-S4/S5 בעצמם. במקרה הזה Windows אינו מעורב. “חלק מהדגמים כן מתעוררים מ-shutdown” מתייחס לחריג הזה.4

תפעולית, הגישה הבסיסית היא להשאיר את המכונה שרוצים להעיר ממתינה ב-“Sleep” או “Hibernate”. גם אם “Wake on Magic Packet” והגדרות דומות של ה-NIC מוגדרות נכון, ה-PC לא יתעורר אם מעבר החשמל של ה-OS כיבה wake. איך drivers מבחינים בין השניים מוסבר ב-7.5. ראו גם “Sleep, hibernation, Modern Standby ואפליקציות ארוכות-ריצה” להתנהגות Modern Standby ו-“הגדרות Advanced של NIC ב-Windows: RSS, LSO, EEE ו-Wake on LAN” להגדרות NIC.

4.5 Dual boot, או טיפול באותו דיסק מ-OS אחר

הסעיף הזה הוא אזהרה שנגזרת מהמנגנון, על בסיס המקורות הראשוניים על מצבי חשמל. ב-hybrid shutdown, תמונת הזיכרון של ה-kernel נשמרת ומשחזרת באתחול הבא.6

כתיבות ממתינות מיושמות לדיסק בנקודת הכניסה ל-hibernation, אבל caches של file system driver וההנחות שלו על מבנה ה-volume נשארים בקובץ ה-hibernation. אם OS אחר (Linux, Windows PE וכן הלאה) כותב לאותו volume NTFS בינתיים, התצוגה הישנה ש-Windows משחזר באתחול הבא לא תסכים עם מה שבאמת על הדיסק.

הסכנה אינה hibernation עצמו אלא Windows שמשחזר את המצב הישן אחרי ש-OS אחר שינה את הדיסק. כש-NTFS driver בצד Linux מסרב לכתוב ל-volume ב-hibernation, או מעלה אותו לקריאה בלבד, זו התנהגות נכונה שנועדה למנוע בדיוק את אי-העקביות הזו.

במכונה שמטפלת באותו דיסק מכמה מערכות הפעלה, או מכונת בדיקה שעולה OS נפרד לתיקון, בונים אחד מהבאים לתפעול.

  • מכבים Fast Startup וגם מכבים hibernation מפורש עם powercfg /h off.
  • דורשים את ה-full shutdown מפרק 3 לפני החלפת מערכות הפעלה.

כיבוי Fast Startup לבדו משאיר hibernation מפורש זמין. מודעים לכך שכתיבה מ-OS אחר בזמן ש-Windows ב-hibernation גורמת לאותה אי-עקביות.

4.6 שינויי הגדרות firmware או תצורת התקנים לא נכנסים לתוקף

אם שיניתם הגדרות UEFI או תצורת ציוד היקפי, ועדיין נראה שהמצב הישן נשאר גם אחרי כיבוי והדלקה, עושים restart כדי לעבור full boot. עם Fast Startup, drivers לוקחים את נתיב ה-resume, לא את נתיב האתחול של cold boot.

Microsoft מבקשת ש-drivers שמגדירים התקן אחרת ב-cold boot וב-resume מ-hibernation יגדירו אותו כמו ב-cold boot אחרי Fast Startup. ב-drivers שלא ממומשים כך, נתיב ה-resume הופך לבעיה. איך driver מבדיל בין השניים מסוכם ב-7.5.5

5. בדיקת ה”הגדרה” ו”נתיב האתחול בפועל” בנפרד

גם כש-Fast Startup מופעל בהגדרות, האתחול האחרון לא בהכרח לקח את הנתיב הזה. קוראים בנפרד את המידע שאומר לכם את ההגדרה ואת המידע שאומר לכם את תוצאת האתחול.

5.1 ארבעה מקומות לבדיקה

איפה בודקים מה זה אומר סייג
Uptime ב-Task Manager האם הזמן מצטבר מאז שה-kernel עלה הרמז הראשון. הוא גם ממשיך ב-sleep, hibernation ו-shutdown שנכשל, לכן לא מסיקים ממנו לבדו
Kernel-Boot, Event ID 27 בלוג System סוג האתחול האחרון משווים מול ה-uptime כדי לאשר את הנתיב בפועל
powercfg /a מצבי חשמל זמינים; האם קובץ hibernation קיים וסוגו עם קובץ hibernation מוקטן, Fast Startup זמין אף על פי ש-hibernation רגיל אינו
HiberbootEnabled מקומי ושל policy הגדרת Fast Startup ערך policy של 0 אינו אומר “כיבוי כפוי”

איך לחשוב על uptime מכוסה ב-4.2, והקשר בין קובץ ה-hibernation להגדרה מוסבר גם ב-6.3 ו-6.4.261718

5.2 איך לקרוא Event 27

Kernel-Boot Event 27 רושם באתחול ערך כמו “The boot type was 0x1”. משמעות הערך אינה מתועדת במקור הרשמי, אבל המיפוי הבא ידוע בהרחבה.

ערך סוג אתחול
0x0 Full boot
0x1 Fast Startup
0x2 Resume מ-hibernation

גם אם ה-uptime ממשיך, ערך אחרון של 0x2 פירושו resume מ-hibernation רגיל, לא Fast Startup. לא מסבירים מה-uptime לבדו; משלבים עם Event 27.

5.3 בדיקה של הכול בבת אחת עם PowerShell

הסקריפט הבא מציג יחד את ההגדרה, קובץ ה-hibernation, ה-uptime וסוג חמשת האתחולים האחרונים. רוב קריאות ה-Registry ולוג האירועים עובדות בלי הרשאות Administrator, אבל powercfg /a דורש הרשאות Administrator בחלק מהסביבות.

# מציגים יחד את הגדרת Fast Startup ואת סוג האתחולים האחרונים
$powerKey  = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power'
$policyKey = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System'

$local  = Get-ItemProperty -Path $powerKey  -Name HiberbootEnabled -ErrorAction SilentlyContinue
$policy = Get-ItemProperty -Path $policyKey -Name HiberbootEnabled -ErrorAction SilentlyContinue
$os     = Get-CimInstance -ClassName Win32_OperatingSystem
$hiberfil = Test-Path -LiteralPath "$env:SystemDrive\hiberfil.sys"

# בלי קובץ hibernation (powercfg /h off), Fast Startup אינו עובד ללא קשר לערך ב-Registry.
# ה-policy "Require use of fast startup" גובר על ההגדרה המקומית רק כשהוא Enabled (1).
# אם ערך ה-policy הוא 0 או לא מוגדר, משתמשים בהגדרה המקומית (אין ערך = מופעל כברירת מחדל)
$effective =
    if (-not $hiberfil) { 'לא זמין (אין קובץ hibernation: מצב powercfg /h off)' }
    elseif ($null -ne $policy -and $policy.HiberbootEnabled -eq 1) { 'מופעל (כפוי ב-policy)' }
    elseif ($null -eq $local -or $local.HiberbootEnabled -eq 1) { 'מופעל (הגדרה מקומית)' }
    else { 'כבוי (הגדרה מקומית)' }

[pscustomobject]@{
    LocalHiberbootEnabled  = if ($null -eq $local)  { '(אין ערך: מופעל כברירת מחדל)' } else { $local.HiberbootEnabled }
    PolicyHiberbootEnabled = if ($null -eq $policy) { '(לא מוגדר)' } else { $policy.HiberbootEnabled }
    EffectiveSetting       = $effective
    HiberfilExists         = $hiberfil
    LastBootUpTime         = $os.LastBootUpTime
    Uptime                 = (Get-Date) - $os.LastBootUpTime
} | Format-List

# סוג חמשת האתחולים האחרונים (0x0 = full boot, 0x1 = Fast Startup, 0x2 = resume מ-hibernation)
Get-WinEvent -FilterHashtable @{ LogName = 'System'; ProviderName = 'Microsoft-Windows-Kernel-Boot'; Id = 27 } -MaxEvents 5 |
    Select-Object TimeCreated, Message

# מצבי שינה זמינים וסוג קובץ ה-hibernation
powercfg /a

ההגדרה האפקטיבית שמוצגת כאן נקבעת בסדר הזה: האם קובץ hibernation קיים, האם ה-policy כופה הפעלה, ומה ההגדרה המקומית. אם ערך ה-policy הוא 0 או לא מוגדר, משתמשים בהגדרה המקומית, ובלי קובץ hibernation Fast Startup אינו זמין יהיו ערכי ההגדרה אשר יהיו.

5.4 “מי ביקש את ה-shutdown” נמצא בלוג אחר

Event ID 1074 (User32) בלוג System רושם את התהליך המבקש, המשתמש וקוד הסיבה, ואת הפעולה המבוקשת (כיבוי, restart וכן הלאה). עם זאת, כי גם hybrid וגם full shutdown נרשמים ככיבוי, 1074 לבדו אינו מבחין בין השניים. מאשרים את הנתיב בפועל עם Event 27 באתחול הבא.

עצירות בלתי צפויות מבודדות מהרצף עם 41 (Kernel-Power) ו-6008 (EventLog).19 הנוהל לאיתור “מחשב הציוד עמד בבוקר” מכוסה ב-“Shutdown ב-Windows מנקודת המבט של האפליקציה”.

6. החלטה אם לכבות Fast Startup, ואיך

6.1 מחליטים לפי תפקיד המכונה, לא באופן גורף

Microsoft מפעילה Fast Startup כברירת מחדל ואינה ממליצה לכבות אותו. יש לו תועלת בזמן אתחול, ותיעוד החומרה מתייחס לקריאה ולכתיבה של קובץ ה-hibernation כעיבוד חשוב מספיק כדי להסביר כ-50% מזמן האתחול. במחשב נייד רגיל אין סיבה לכבות באופן גורף.12

שני הצירים להחלטה הם “האם התפעול מניח שכיבוי מאתחל את המכונה?” ו-“האם OS אחר ישנה את אותו volume?” שני אלה בלתי תלויים. לא עוצרים ב”כיבינו כי זה מחשב ציוד”; בודקים גם אם OS אחר כותב לדיסק.

תפקיד המכונה או מטרה תגובה מומלצת סיבה
מחשב ציוד או מחשב מדידה שבו אתחול בכיבוי הוא הנחת תפעול מכבים במקום שבו אי אפשר לשנות את הנוהל ל-“restart”, מבטיחים אתחול דרך ההגדרה
מכונת בדיקה, או מכונה שמטפלת באותו דיסק מכמה מערכות הפעלה בנוסף לכיבוי, גם מכבים hibernation, או דורשים full shutdown לפני החלפת OS עצירת Fast Startup לבדה משאירה את אי-העקביות שנגרמת מ-hibernation מפורש (4.5)
מכונה שצריך להעיר בלילה ב-WOL בוחנים מחדש את מצב ההמתנה, לא את ההגדרה גם כשכבוי, WOL מ-S5 אינו נתמך. מכונות Modern Standby צריכות אימות במכונה אמיתית (4.4)
מכונה עם אחסון קטן שוקלים קובץ hibernation מוקטן מכווץ את קובץ ה-hibernation תוך שמירה על Fast Startup (6.4)
מחשב נייד עסקי רגיל משאירים דולק ועושים restart כשצריך שומר על האתחול המהיר, ובידוד אפשר לעשות עם restart
מכונה דמוית שרת שתמיד דולקת ומעולם לא מכובה כל אחת בסדר אם מעולם לא מכבים, להגדרה אין אפקט, ו-restart הוא תמיד full boot

6.2 שינוי מכונה אחת בכל פעם: Control Panel

גם ב-Windows 10 וגם ב-11, המקום לשנות הוא Control Panel, לא אפליקציית Settings.4

  1. פותחים “Power Options” ובוחרים “Choose what the power buttons do”.
  2. אם הפריטים אפורים, לוחצים “Change settings that are currently unavailable” (דורש הרשאות Administrator).
  3. מבטלים את סימון “Turn on fast startup (recommended)”.
  4. שומרים את השינויים.

אם הפריט עצמו אינו מוצג, hibernation כבוי ואין קובץ hibernation. ראו את ההסבר של powercfg /a ושל קובץ ה-hibernation ב-6.4.

6.3 הגדרת מכונות רבות: מבחינים בין Registry ל-policy

ההגדרה המקומית היא HiberbootEnabled (DWORD) תחת HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power. 0 מכבה ו-1 מפעיל, ותיבת הסימון ב-Control Panel קוראת וכותבת את אותו ערך.17

# מריצים ב-PowerShell שנפתח כ-administrator. מכבה Fast Startup
$powerKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power'
Set-ItemProperty -Path $powerKey -Name HiberbootEnabled -Type DWord -Value 0

# קוראים את הערך בחזרה לאימות
(Get-ItemProperty -Path $powerKey -Name HiberbootEnabled).HiberbootEnabled

עם זאת, אם ה-policy “Require use of fast startup” הוא Enabled, ה-policy גובר על הערך המקומי. גם אם מגדירים את הערך המקומי ל-0 וקוראים בחזרה 0, Fast Startup נשאר מופעל. במקרה הזה, קודם מחזירים את ה-policy ל-Disabled או Not Configured.18

מצב policy תוצאה
Enabled דורש Fast Startup ודורש ש-hibernation יהיה מופעל. גובר על ההגדרה המקומית
Disabled או Not Configured משתמשים ב-HiberbootEnabled המקומי. אינו כופה כיבוי Fast Startup

ה-policy הזה נמצא ב-WinInit.admx תחת “Computer Configuration > Administrative Templates > System > Shutdown”. הוא כותב ל-HiberbootEnabled תחת HKLM\SOFTWARE\Policies\Microsoft\Windows\System. ב-Intune אפשר להגדיר אותו כ-Policy CSP ADMX_WinInit/Hiberboot.18

כדי לגלגל כיבוי באופן גורף, מפיצים את HiberbootEnabled = 0 המקומי עם Group Policy Preferences או תצורת Intune. מפעילים את ה-policy הזה כשרוצים לכפות הפעלה כך שמשתמשים לא יוכלו לכבות.

שלוש השכבות של הגדרת Fast Startupאם ה-policy Require use of fast startup הוא Enabled, Fast Startup מופעל בעדיפות על ההגדרה המקומית; אם אינו מוגדר, משתמשים ב-HiberbootEnabled המקומי. בכל נתיב, Fast Startup אינו זמין אלא אם קובץ hibernation קייםמופעלכבוי או לא מוגדר1 (ברירת מחדל)0כן (מלא או מוקטן)לא (powercfg /h off)Policy: Require use of fast startupכפיית הפעלה (ההגדרה המקומית מתעלמת)מקומי: HiberbootEnabledמופעלכבויהאם קובץ ה-hibernation (hiberfil.sys) קיים?Fast Startup עובדFast Startup לא זמין

איור 2: ה-policy הוא הגדרה שכופה הפעלה. כיבוי מופץ דרך ערך Registry מקומי, ובכל נתיב Fast Startup אינו זמין בלי קובץ hibernation.

השינוי נכנס לתוקף מה-shutdown הבא. לאימות, מבצעים “Shut down” רגיל, מדליקים, ובודקים ש-Event 27 הוא 0x0. Restart הוא full boot בלי קשר להגדרה, ולכן אי אפשר להשתמש בו לאימות הכיבוי. קריאה בחזרה של ה-Registry מאשרת את ערך ההגדרה; Event 27 מאשר את הנתיב בפועל.

6.4 powercfg /h off אינו אותו דבר כמו “כיבוי Fast Startup בלבד”

Fast Startup מסתמך על קובץ ה-hibernation, hiberfil.sys. powercfg /hibernate off (powercfg /h off) היא הפעולה שמוחקת את קובץ ה-hibernation הזה. לא רק Fast Startup אלא גם hibernation רגיל ו-hybrid sleep הופכים ללא זמינים.206

הגדרת HiberbootEnabled = 0, לעומת זאת, משאירה את קובץ ה-hibernation במקום. משנים את היעד הנכון לכל מטרה.

מטרה הגדרה או פקודה מה נשאר ומה אובד
לעצור רק Fast Startup HiberbootEnabled = 0 קובץ ה-hibernation נשאר. אם הוא מסוג full, גם hibernation רגיל נשאר
לכווץ את הקובץ אבל לשמור Fast Startup powercfg /h /type reduced קובץ hibernation מוקטן (20% מהזיכרון הפיזי כברירת מחדל). Hibernation רגיל ו-hybrid sleep אינם זמינים
לחזור לסוג שמאפשר גם hibernation רגיל powercfg /h /type full קובץ hibernation מלא (40% מהזיכרון הפיזי כברירת מחדל). לא מומלץ במכונות עם פחות מ-32 GB אחסון
לוותר על hibernation לגמרי powercfg /h off מוחק את קובץ ה-hibernation. Fast Startup, hibernation ו-hybrid sleep כולם הופכים ללא זמינים

קובץ hibernation מלא תומך ב-hibernation, hybrid sleep ו-Fast Startup. Hybrid sleep דורש S3, עם זאת, כך שבמכונת Modern Standby בלי S3 אי אפשר להשתמש בו גם עם קובץ hibernation מלא. קובץ hibernation מוקטן תומך רק ב-Fast Startup. במחשב שכבר היה מסוג reduced, כיבוי Fast Startup בלבד אינו הופך hibernation רגיל או hybrid sleep לזמינים.6

קוראים את הפלט של powercfg /a עם ההבחנה הזו גם כן.

קובץ hibernation מה מוצג על hibernation רגיל Fast Startup
Full זמין זמין
Reduced “Hibernation is not supported” זמין
None “Hibernation has not been enabled” לא זמין

אם /type reduced נכשל עם “The parameter is incorrect”, זה כי גודל קובץ ה-hibernation הוגדר ידנית ליותר מ-40%. קודם מריצים powercfg /h /size 0 כדי להחזיר את הגודל לניהול ה-OS, ואז מריצים שוב.621

במכונה ש-OS אחר משנה בה את אותו volume, ה-hibernation הרגיל שנשאר גורם לאותה אי-עקביות כמו ב-4.5. לא עוצרים בכיבוי Fast Startup; גם מכבים hibernation, או דורשים full shutdown לפני החלפת OS.

7. למפתחים: APIs של shutdown וסייגים ל-services

7.1 ה-API מציין “איזו פעולה”, לא רק “hybrid או לא”

ל-APIs של shutdown שנקראים מאפליקציה יש התנהגות ברירת מחדל שונה מתפריט החשמל. לפי התיעוד של Microsoft, InitiateSystemShutdownEx ו-InitiateSystemShutdown אף פעם לא הופכים ל-hybrid, בעוד InitiateShutdown ו-ExitWindowsEx מבקשים hybrid עם דגל מפורש.26

API Full shutdown שמכבה חשמל Shutdown ל-Fast Startup
InitiateSystemShutdownEx / InitiateSystemShutdown bRebootAfterShutdown = FALSE אף פעם לא hybrid
InitiateShutdown מציינים SHUTDOWN_POWEROFF בלי SHUTDOWN_HYBRID משלבים SHUTDOWN_POWEROFF עם SHUTDOWN_HYBRID
ExitWindowsEx מציינים EWX_POWEROFF בלי EWX_HYBRID_SHUTDOWN משלבים EWX_SHUTDOWN עם EWX_HYBRID_SHUTDOWN

SHUTDOWN_HYBRID אינו מצוין לבדו; הוא משולב עם דגל אחד או יותר מאותה טבלה. מביניהם, השילוב שנותן כיבוי ל-Fast Startup הוא זה עם SHUTDOWN_POWEROFF. גם EWX_HYBRID_SHUTDOWN אינו בשימוש לבדו אלא משולב עם EWX_SHUTDOWN.2223

הסרת דגל hybrid לבדה אינה קובעת את הפעולה. נדרשות גם ההבחנות הבאות.112223

ארגומנט או דגל הפעולה שמבוצעת
bRebootAfterShutdown = TRUE, SHUTDOWN_RESTART, EWX_REBOOT Restart
SHUTDOWN_NOREBOOT עוצר את המערכת אבל אינו מכבה חשמל
EWX_SHUTDOWN עוצר את המערכת עד נקודה שבה אפשר לכבות חשמל בבטחה, אבל אינו מכבה
ExitWindowsEx עם uFlags = 0 EWX_LOGOFF, כלומר sign-out

אם מממשים כפתור “כיבוי” במסוף kiosk או במחשב ציוד, קוראים ל-InitiateSystemShutdownEx עם bRebootAfterShutdown = FALSE, או ל-ExitWindowsEx עם EWX_POWEROFF, ולא מוסיפים את דגל hybrid. מה שחשוב הוא לשמור על מפרט הכיבוי הנדרש, לא “בלי דגלים”.

7.2 מפעילים את ההרשאה על ה-token הנכון לפני הקריאה

עם כל אחד מה-APIs האלה, כיבוי ה-PC המקומי דורש שהרשאת SE_SHUTDOWN_NAME תהיה מופעלת מראש עם AdjustTokenPrivileges. כברירת מחדל, משתמש מחובר יכול להפעיל את ההרשאה הזו, אבל אם קוראים כשהיא עדיין כבויה, ה-API נכשל ושום shutdown לא מתחיל.1123

ה-token שעליו מפעילים אותה נבדל לפי API.

API Token שעליו מפעילים את ההרשאה
ExitWindowsEx ה-token של התהליך הקורא. פותחים אותו עם OpenProcessToken
InitiateSystemShutdown(Ex) / InitiateShutdown ה-token האפקטיבי של ה-thread הקורא. token של ה-thread אם עושים impersonation; אחרת token של התהליך

לאפליקציית desktop או kiosk רגילה שאינה עושה impersonation אין thread token. OpenThreadToken נכשל עם ERROR_NO_TOKEN, לכן מוודאים שהקוד אינו ממשיך לקריאה כשההרשאה עדיין כבויה.

7.3 כדי להתנהג כמו תפריט החשמל, קוראים את ההגדרה האפקטיבית

EWX_HYBRID_SHUTDOWN הוא דגל ש“מבקש Fast Startup”, לא כזה ש”עוקב אחרי ההגדרה של המחשב הזה”.23

אם Fast Startup כבוי אבל קובץ ה-hibernation נשאר במחשב, בקשה עם הדגל הזה פירושה שהאפליקציה עוקפת את הגדרת המשתמש. כלי שכבוד להגדרה צריך לבדוק את ה-policy, את HiberbootEnabled המקומי, והאם קובץ ה-hibernation קיים, לפי אותם כללים כמו הסקריפט ב-5.3.

משלבים EWX_SHUTDOWN עם EWX_HYBRID_SHUTDOWN רק כשההגדרה האפקטיבית מופעלת; אחרת בוחרים full shutdown שמכבה חשמל. מאשרים את התוצאה עם Event 27 באתחול הבא.

7.4 Services חייבים לטפל ב-power events, לא רק בהודעות עצירה

ב-hybrid shutdown, אפליקציות ב-session המשתמש נסגרות, אבל services של Session 0 נכנסים ל-hibernation ומשחזרים. Services לפי משתמש נעצרים ונמחקים ב-sign-out, לכן משאירים כאן את השניים נבדלים.27

בכניסה ל-hibernation, אפליקציות ו-services מקבלים הודעה קודם, ואז drivers. הנקודה החשובה היא שב-resume, drivers ו-services אינם מתחילים מחדש; הם חוזרים למצב שהיו בו לפני hibernation.6

התיעוד של Microsoft לכלי ההערכה שלה מסביר שהודעות suspend נשלחות בסדרה ל-services שהצהירו SERVICE_ACCEPT_POWEREVENT, שחל timeout של 30 שניות לכל service, ושמנקודת המבט של service Fast Startup זהה ל-hibernation.24

אם service נכנס ל-hibernation כשהוא מחזיק חיבור להתקן וההתקן כובה בינתיים, החיבור שמשחזר בבוקר כבר אינו שמיש. אם כל הניקוי נשאר להודעת העצירה, הנתיב הזה אינו מטופל.

נתיב הצהרת קבלה נדרשת איך ה-service מטופל
Restart או full shutdown SERVICE_ACCEPT_SHUTDOWN / SERVICE_ACCEPT_PRESHUTDOWN מקבל את הודעת העצירה המתאימה ומסתיים
Hybrid shutdown או hibernation SERVICE_ACCEPT_POWEREVENT מקבל power events ונכנס ל-hibernation ומשחזר עם מצבו

הודעות העצירה הן SERVICE_CONTROL_SHUTDOWN / SERVICE_CONTROL_PRESHUTDOWN. הטיפול הזה נחוץ ל-restart ול-full shutdown, לכן לא מסירים אותו. משאירים אותו, ובנוסף מבצעים ניקוי וחיבור מחדש ב-power events של המעבר ל-sleep או hibernation וה-resume מהם.25

אף אחת מההודעות אינה נמסרת אלא ל-services שעשו את הצהרת הקבלה המתאימה. בלי ההצהרה, ה-service מסתיים בלי הודעה בזמן עצירה, ונכנס ל-hibernation ומשחזר בלי הודעה ב-hybrid shutdown. מה שמתחיל שוב באתחול אחרי full shutdown הם services שסוג ההפעלה שלהם הוא Automatic. Services מסוג Manual ו-Disabled לא חוזרים בלי תלות, trigger או הפעלה מפורשת. איך לקבל power events בפועל מכוסה ב-“אפליקציות שנשברות אחרי Sleep”.24

7.5 Drivers יכולים להבחין בין Fast Startup ל-resume רגיל מ-hibernation

Drivers יכולים להבחין בין השניים באמצעות SYSTEM_POWER_STATE_CONTEXT שנכלל ב-system set-power IRP.5

נתיב TargetSystemState EffectiveSystemState
Fast Startup PowerSystemShutdown PowerSystemHibernate
Resume מ-hibernation רגיל PowerSystemHibernate PowerSystemHibernate

ה-NDIS driver שמסופק במערכת משתמש בהבדל הזה: הוא מכבה את יכולת ה-wake של ה-miniport ל-Fast Startup ואינו מכבה אותה ל-resume מ-hibernation רגיל. זו הסיבה, שהוסברה ב-4.4, למה WOL מטופל אחרת אף על פי ששניהם S4.5

גם ההנחיה של Microsoft היא ש-drivers שמגדירים התקן אחרת ב-cold boot וב-resume מ-hibernation צריכים להגדיר אותו כמו ב-cold boot אחרי Fast Startup.5

8. שיקוף זה בנוהלים ובניטור

אחרי שמבינים את המנגנון, מיישרים את הפעולות והניסוח שבשימוש בשטח.

מצב תפעולי מה לכתוב בנוהל או בהודעה
בידוד ראשוני של בעיה “Restart”, לא “כיבוי והדלקה מחדש”
כשעוברים את סף ה-uptime “נא לעשות restart”. מסבירים למה האזהרה מופיעה גם למשתמשים שמכבים כל יום
כשמסיימים עדכונים הופכים “Update and restart” לתקן
כשמכבים כתצורה תקנית למחשבי ציוד מכניסים את הגדרת ה-Registry מ-6.3 ל-provisioning, ובקבלה מאמתים את האתחול אחרי shutdown רגיל בשיטה של פרק 5

ציון “restart” במפורש חשוב גם למניעת כיבויים כפויים בלחיצה ארוכה על כפתור החשמל בשטח. ניטור מבוסס uptime אפשר להשאיר כפי שהוא. במכונת Fast Startup, הוא מזהה נכון שה-kernel לא עבר restart.

גם כש-restart גורם לבעיה להיעלם, משיגים את בדיקת השחזור ואת אימות הלוג מ-4.1 לפני שמשקפים את זה בנוהלים או בהגדרות. אם restart לא מתקן, מחפשים סיבות שאינן Fast Startup. ראו גם “Shutdown ב-Windows מנקודת המבט של האפליקציה” לקשר בין עדכונים לאפליקציות של מחשבי ציוד.3

9. סיכום

הנקודה לזכור היא ש“shutdown” עם Fast Startup מופעל הוא כיבוי מנקודת המבט של המשתמש, לא פעולה שבונה מחדש את כל מצב Windows. אפליקציות ו-session המשתמש נסגרים, אבל ה-kernel, ה-drivers ו-services של Session 0 נשמרים ומשחזרים.52

במחשב שבו Fast Startup כבוי, או בלי קובץ hibernation, גם “Shut down” רגיל סוגר את session של ה-kernel ונכנס ל-S5.

כדי לאפס פעם אחת, בוחרים Restart; כדי לסיים לגמרי ולנתק גם חשמל, בוחרים shutdown /s /t 0. לא מסיקים את הסיבה רק כי restart תיקן; מאמתים עם בדיקת שחזור, Event 27 והלוגים סביבם.19

האם לכבות Fast Startup מחליטים לפי האם המכונה מניחה אתחול והאם OS אחר משנה את אותו volume. לאחרון נחוצים גם אמצעים ל-hibernation מפורש. אם WOL היא המטרה, בוחנים מחדש את מצב ההמתנה במקום להחליף את ההגדרה.17204

מאמרים קשורים

תחומי ייעוץ קשורים

KomuraSoft LLC מטפלת בתכנון תקני provisioning שכוללים את תפעול החשמל של מחשבי ציוד ומסופי kiosk (shutdown, sleep, hibernation ו-Wake on LAN), בחקירת שורש של בעיות אפליקציות ארוכות-ריצה כמו “רק restart מתקן” ו”זה עמד בבוקר”, וב-design review של טיפול ב-power events ב-Windows services ובאפליקציות תושבות. אפשר להתחיל מתיק בודד כמו “ה-uptime לא יורד אף שמכבים כל לילה”.

קישורים

  1. Microsoft Learn, Fast startup causes hibernation or shutdown to fail in Windows 10 or Windows 8.1. על כך ש-Fast Startup מכניס את session של ה-kernel ל-hibernation במקום לסגור אותו ושומר את session של ה-kernel ואת device drivers ל-hiberfil.sys; ש-restart מבצע מחזור full boot; שהגדרת Fast Startup אינה חלה על restart-ים; שהוא מופעל כברירת מחדל וכיבוי אינו מומלץ; ש-Shutdown /s /t 0 הוא full shutdown כברירת מחדל ו-/hybrid הופך אותו ל-hybrid; ושהמערכת חוזרת למסך הנעילה עם Event ID 45 כשאתחול תצורת memory dump נכשל בזמן hibernation, עם DumpFilters כמקום לבדיקה.  2 3 4 5 6 7 8 9 10 11

  2. Microsoft Learn, Delivering a great startup and shutdown experience. על תרחיש shutdown ו-restart ברירת המחדל מאז Windows 8.x שנקרא fast startup, sign-out לכל sessions המשתמש (“session 1” במונחי המסמך) וכתיבת השאר לקובץ ה-hibernation; טעינת המצב שאותחל מקובץ ה-hibernation באתחול במקום full boot; שה-kernel, ה-drivers וה-services נשמרים ומשחזרים במקום לעבור restart ב-shutdown שיזם המשתמש, כך שה-uptime בין restart-ים של ה-kernel יכול להיות ארוך משמעותית מבעבר; שצריך לנטר memory leaks ב-drivers וב-services; שקריאה וכתיבה של קובץ ה-hibernation מסבירות כ-50% מזמן האתחול; וטבלת התנהגות APIs של shutdown (InitiateSystemShutdownEx ו-InitiateSystemShutdown תמיד full shutdown, InitiateShutdown עם SHUTDOWN_HYBRID ו-ExitWindowsEx עם EWX_HYBRID_SHUTDOWN ל-shutdown של Fast Startup).  2 3 4 5 6 7 8 9 10

  3. Microsoft Learn, Updates may not be installed with Fast Startup in Windows 10. על עדכונים שלפעמים אינם מותקנים אחרי shutdown כש-Fast Startup מופעל, מה שלא קורה עם restart; שחלק מהעדכונים מסתיימים רק באתחול שאחרי full shutdown; בחירת “Restart” מתפריט החשמל להשלמת עדכונים ממתינים; וההשהיה בסביבות Configuration Manager שטופלה ב-Configuration Manager 2002 וב-Windows 10 21H1.  2 3 4

  4. Microsoft Learn, Wake on LAN (WOL) behavior in Windows 10. על shutdown ברירת המחדל ב-Windows 7 שהיה S5, עם WOL מ-S5 שאינו נתמך רשמית אף על פי שחלק מהדגמים התעוררו על חשמל שיורי; ש-shutdown ברירת המחדל ב-Windows 10 הוא hybrid shutdown (S4), עם WOL מ-S4 ומ-S5 שאינו נתמך והמתאם אינו מוכן במפורש ל-wake; ש-WOL נתמך רק מ-sleep (S3) או hibernation (S4) שהמשתמש בחר במפורש; ש-Windows מכבה WOL במפורש רק במעבר ל-hybrid shutdown ולא במעבר ל-hibernation; שחלק מהדגמים שה-firmware והחומרה שלהם תומכים ב-wake מ-S4/S5, ובמקרה הזה Windows אינו מעורב; הנוהל לכיבוי בביטול סימון “Turn on fast startup (recommended)” תחת “Power Options” > “Choose what the power buttons do” ב-Control Panel; ושכיבוי אינו מומלץ.  2 3 4 5 6 7

  5. Microsoft Learn, Distinguishing fast startup from wake-from-hibernation. על שלושת מצבי האתחול, cold, resume מ-hibernation, ו-fast (הוצג ב-Windows 8); ש-cold boot טוען את ה-kernel, מונה התקנים וטוען drivers, בעוד Fast Startup רק קורא את קובץ ה-hibernation; ההכנה ל-Fast Startup של סגירת אפליקציות, sign-out לכל sessions המשתמש, שליחת power IRP ל-drivers להכנה ל-hibernation, ושמירת תמונת הזיכרון של ה-kernel כולל kernel-mode drivers ל-hiberfil.sys לפני ניתוק החשמל; הבחנה בין השניים עם TargetSystemState ו-EffectiveSystemState של SYSTEM_POWER_STATE_CONTEXT; ש-NDIS driver מכבה את יכולת ה-wake של ה-miniport ל-Fast Startup אבל לא ל-resume מ-hibernation; וש-drivers שמגדירים אחרת ל-cold boot ול-resume מ-hibernation צריכים להגדיר כמו ב-cold boot אחרי Fast Startup.  2 3 4 5 6 7 8

  6. Microsoft Learn, System power states. על כך ש-Fast Startup הוא סוג shutdown שעושה sign-out למשתמש לפני יצירת קובץ ה-hibernation; שהמערכת נראית למשתמש ב-S5 אבל בפועל עוברת דרך S4, עם תגובה לאזעקות wake של התקנים בהתאם; שתוכן Session 0 נכתב לדיסק; שני סוגי קובץ hibernation, full (40% כברירת מחדל) ו-reduced (20% כברירת מחדל, Fast Startup בלבד), והפלט השונה של powercfg /a לכל אחד; להריץ /size 0 קודם כש-/type reduced נכשל; ש-Fast Startup הוא ברירת המחדל כשמבקשים shutdown, בעוד בקשת restart וקריאת API shutdown מאפליקציה מביאות ל-full shutdown (S5); שאפליקציות, services ו-drivers מקבלים הודעה בכניסה ל-hibernation וש-drivers ו-services משחזרים למצב שלפני hibernation במקום להתחיל מחדש ב-resume; ועל SHUTDOWN_HYBRID ל-InitiateShutdown ו-EWX_HYBRID_SHUTDOWN ל-ExitWindowsEx 2 3 4 5 6 7 8 9 10

  7. Microsoft Learn, Per-user services in Windows. על כך ש-services לפי משתמש נוצרים כשמשתמש נכנס ב-sign-in ונעצרים ונמחקים כשהמשתמש יוצא ב-sign-out.  2

  8. Microsoft Learn, Optimizing Performance and Responsiveness. על Fast Startup, שהוצג ב-Windows 8, כהתנהגות האתחול ברירת המחדל, עם תהליך ה-shutdown שעודכן לכתוב נתונים לדיסק כמו hibernation; אתחול שעובר את שלבי אתחול BIOS, קריאת קובץ ה-hibernation, resume של התקנים, resume של Winlogon, אתחול Explorer, ו-Post On/Off; ושקובץ ה-hibernation מכיל את כל הקשר המערכתי שנכתב ב-shutdown. 

  9. Microsoft Learn, shutdown. על כך ש-/s מכבה את המחשב; ש-/hybrid הוא האפשרות שמכבה את המכשיר ומכינה אותו ל-Fast Startup, בשימוש בשילוב עם /s; ש-/g עושה full shutdown ואז restart, וממשיך אפליקציות רשומות אם Automatic Restart Sign-On מופעל; ושברירת המחדל של /t היא 30 שניות, עם 0 מותר.  2 3

  10. Microsoft Q&A, why is Task Host preventing shutdown?. על תשובת התמיכה שמסבירה שבחירת “Shut down” תוך החזקת מקש Shift בשולחן העבודה או במסך הכניסה מכבה זמנית Fast Startup לפעם הזו ומבצעת full shutdown (תשובת תמיכה קהילתית, לא מקור רשמי). 

  11. Microsoft Learn, InitiateSystemShutdownExA function (winreg.h). על כך שהמערכת עושה restart מיד אחרי shutdown כש-bRebootAfterShutdown הוא TRUE, ושוטפת caches לדיסק ומכבה בבטחה כשהוא FALSE; ועל כך שכיבוי ה-PC המקומי דורש את הרשאת SE_SHUTDOWN_NAME על ה-thread הקורא, שמשתמש מחובר יכול להפעיל כברירת מחדל.  2 3

  12. Microsoft Learn, WMI Tasks: Desktop Management. על קבלת uptime של מחשב על ידי חיסור המאפיין LastBootUpTime של המחלקה Win32_OperatingSystem מהזמן הנוכחי. 

  13. Microsoft Learn, Get-Uptime. על כך שה-cmdlet הוצג ב-PowerShell 6.0 ומחשב את הזמן מאז אתחול ה-OS האחרון מטיימר ברזולוציה גבוהה (מונה ticks מאז תחילת המערכת), כך שהערך יכול להיבדל מעט מזה שנגזר מ-LastBootUpTime של Win32_OperatingSystem ב-WMI. 

  14. Microsoft Learn, Ethernet. על כך שהתנהגות shutdown ברירת המחדל היא hybrid shutdown (S4); שה-NIC אינו מוכן ל-wake ו-remote wake אינו נתמך גם ב-hybrid shutdown (S4) וגם ב-full shutdown (S5); וש-WOL נתמך רק מ-sleep (S3) או hibernation (S4). 

  15. Microsoft Learn, Modern Standby Wake Sources. על מחשבי Modern Standby שנשארים מחוברים לרשת (Wi-Fi, mobile broadband, Ethernet) בהספק נמוך גם כשהמסך כבוי; ש-Wi-Fi, Ethernet והתקני MBB מספקים קישוריות רציפה ומשמשים כמקורות wake; ש-Remote Desktop ושיתוף קבצים יכולים להעיר את ה-SoC דרך חיבור Ethernet; ושמקורות wake רבים כבויים ב-Windows 11 גרסה 24H2 ואילך כשמזוהה ניקוז סוללה מוגזם.  2

  16. Microsoft Learn, Wake On LAN for Surface devices. על Wake on LAN שעובד כברירת מחדל במכשירי Surface בזמן Modern Standby מאז Windows 10 גרסה 1607, ועל wake מ-hibernation (S4) או shutdown (S5) שדורש תמיכה בצד ה-dock כמו Surface Dock 2. 

  17. Microsoft Learn, Hibernate Once/Resume Many (HORM). על כך שערך ה-Registry שמכבה Fast Startup הוא HiberbootEnabled (DWORD, 0 לכבוי, 1 למופעל) תחת HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power, ועל כך ש-powercfg /h off, שמכבה hibernation, מוחק את hiberfil.sys.  2 3

  18. Microsoft Learn, Policy CSP - ADMX_WinInit. על כך שה-policy “Require use of fast startup” (Hiberboot, WinInit.admx, Computer Configuration > System > Shutdown) שולט בשימוש ב-Fast Startup, שהמערכת דורשת ש-hibernation יהיה מופעל כשהוא Enabled, ושההגדרה המקומית בשימוש כשהוא Disabled או Not Configured; שמפתח ה-Registry הוא Software\Policies\Microsoft\Windows\System עם שם הערך HiberbootEnabled; ושאפשר להגדיר אותו מ-Intune כ-./Device/Vendor/MSFT/Policy/Config/ADMX_WinInit/Hiberboot 2 3

  19. Microsoft Learn, How to troubleshoot unexpected reboots by using the system event logs. על כך ש-Event ID 1074 רושם את התהליך, המשתמש, הסיבה וסוג ה-shutdown שביקש אותו, ועל כך ש-41 ו-6008 מצביעים על עצירה בלתי צפויה. 

  20. Microsoft Learn, How to disable and re-enable hibernation on a computer that is running Windows. על נהלי powercfg.exe /hibernate off ו-on; ש-hybrid sleep כבר לא עובד כש-hibernation כבוי; ועל כך ש-hiberfil.sys הוא קובץ מערכת מוסתר בשורש הכונן שבו מותקן ה-OS, בערך באותו גודל כמו ה-RAM, שבליו המחשב אינו יכול להיכנס ל-hibernation.  2

  21. Microsoft Learn, Powercfg command-line options. על /hibernate on / off; /size שמציין את גודל קובץ ה-hibernation כאחוז מהזיכרון; /type reduced | full שמציין את סוג קובץ ה-hibernation, עם קובץ hibernation מוקטן שתומך רק ב-hiberboot; ועל כך ש-HiberFileSizePercent של 40 או יותר מטופל כקובץ hibernation מלא, כך שצריך להריץ /size 0 קודם כדי לעבור ל-reduced. 

  22. Microsoft Learn, InitiateShutdownA function (winreg.h). על כך שב-Windows 8 ואילך מציינים SHUTDOWN_HYBRID בשילוב עם דגל אחד או יותר מאותה טבלה (השילוב עם SHUTDOWN_POWEROFF הוא הכיבוי ל-Fast Startup, SHUTDOWN_RESTART הוא restart, ו-SHUTDOWN_NOREBOOT רק עוצר בלי לכבות), וש-shutdown תמיד full system shutdown בלי SHUTDOWN_HYBRID 2

  23. Microsoft Learn, ExitWindowsEx function (winuser.h). על כך ש-EWX_HYBRID_SHUTDOWN הוא דגל, זמין ב-Windows 8 ואילך, שמשולב עם EWX_SHUTDOWN לבקשת shutdown מוכן ל-Fast Startup; ש-InitiateSystemShutdown / InitiateSystemShutdownEx הם הפונקציות לשימוש כשזה אינו המשתמש האינטראקטיבי; ש-shutdown או restart דורשים שהתהליך הקורא הפעיל את הרשאת SE_SHUTDOWN_NAME עם AdjustTokenPrivileges; וש-EWX_SHUTDOWN רק עוצר את המערכת עד נקודה שבה אפשר לכבות חשמל בבטחה, כש-EWX_POWEROFF הוא מה שמכבה את החשמל.  2 3 4

  24. Microsoft Learn, Suspend Services Duration. על כך שכל ה-services הרשומים לקבל אירועי ניהול חשמל (SERVICE_ACCEPT_POWEREVENT) מקבלים את הודעת ה-suspend; שההודעות נשלחות בסדרה עם timeout של 30 שניות לכל service; וש-Fast Startup זהה ל-hibernation מנקודת המבט של service.  2

  25. Microsoft Learn, SERVICE_STATUS structure (winsvc.h). על כך שרק services שמגדירים SERVICE_ACCEPT_SHUTDOWN / SERVICE_ACCEPT_PRESHUTDOWN / SERVICE_ACCEPT_POWEREVENT ב-dwControlsAccepted מקבלים את ההודעות SERVICE_CONTROL_SHUTDOWN / SERVICE_CONTROL_PRESHUTDOWN / SERVICE_CONTROL_POWEREVENT בהתאמה. 

מאמרים עדכניים עם אותן תגיות, להעמקה בנושאים קרובים.

העמודים האלה ממקמים את הנושא בהקשר רחב יותר של שירותים והחלטות.

המאמר קשור ישירות לשירותים הבאים.

שאלות נפוצות

שאלות נפוצות בפניות בנושא המאמר.

בעיה ש-"shutdown" לא תיקן נעלמה אחרי "restart". למה?
בגרסאות client של Windows 8 ואילך, "shutdown" בתצורה שבה Fast Startup מופעל (ברירת המחדל ברוב המחשבים שתומכים ב-hibernation) הוא hybrid shutdown. המשתמש יוצא ב-sign-out, אבל מצב ה-kernel, ה-drivers וה-services נשמר לקובץ ה-hibernation (hiberfil.sys) ומשחזר כפי שהוא באתחול הבא. כלומר, ליבת ה-OS לא אופסה. "Restart", לעומת זאת, תמיד מבצע מחזור full boot בלי קשר להגדרת Fast Startup, ולכן מצב רע ב-drivers וב-services מתאפס. עם זאת, זה ש-restart תיקן אינו מאשר לבדו את הסיבה. בעיה לסירוגין פשוט אולי לא שוחזרה, או שה-restart תיקן כי השלים עדכון שהמתין. מאשרים כמה פעמים ש"זה משתחזר אחרי shutdown ולא משתחזר אחרי restart", מאמתים עם Kernel-Boot Event 27 בלוג System שמראה שהאתחול האחרון היה 0x1 (Fast Startup) ועם רישומים בצד ה-driver, ורק אז מתייחסים למצב שנשמר כסיבה. בבידוד בעיה משתמשים ב-"restart", לא ב-"כיבוי והדלקה מחדש".
ה-uptime ב-Task Manager לא התאפס כבר ימים. משהו שבור?
מונה ה-uptime עצמו עובד נכון. אם "מכבים" כל לילה וה-uptime ממשיך לגדול, זו כנראה ההתנהגות המוגדרת של Fast Startup (hybrid shutdown), אבל shutdown שנכשל ולא הסתיים נראה אותו דבר, לכן לא מסיקים "שום דבר לא שבור" עד שבדקתם Event 27 ואת רשומות הלוג סביבו שמתוארות בהמשך. Uptime הוא הזמן שחלף מאז שה-kernel עלה, וב-hybrid shutdown ה-kernel רק נכנס ל-hibernation ומשחזר, כך שהמונה ממשיך לרוץ. גם התיעוד של Microsoft מציין במפורש שב-shutdown שיזם המשתמש ה-kernel, ה-drivers וה-services נשמרים ומשחזרים במקום לעבור restart, כך שה-uptime בין restart-ים של ה-kernel יכול להיות ארוך משמעותית מגרסאות Windows קודמות. Uptime נשמר גם ב-resume מ-sleep או hibernation וגם ב-shutdown שלא הסתיים, לכן כדי להיות בטוחים מאשרים עם Kernel-Boot Event 27 בלוג System שסוג האתחול האחרון היה 0x1 (Fast Startup). כדי לאפס את ה-uptime בוחרים "Restart" או מבצעים full shutdown עם shutdown /s /t 0.
כדאי לכבות Fast Startup?
לא באופן גורף. Microsoft אינה ממליצה לכבות Fast Startup, ובמחשב נייד רגיל האתחול המהיר שווה יותר מהחסרונות. כדאי לכבות במכונות שמופעלות בהנחה ש"כיבוי מאתחל הכול", כמו מחשבי ציוד ומכונות בדיקה, בסביבות dual-boot שחולקות את אותו דיסק עם OS אחר, ובמכונות בדיקה שעולות מ-OS אחר ומשנות את ה-volume (במקרה הזה, כיבוי Fast Startup לבדו משאיר hibernation מפורש זמין, ולכן גם מכבים hibernation עם powercfg /h off, או דורשים full shutdown לפני החלפת OS בנוהל). אם המטרה היא לפנות מקום בדיסק, כיבוי Fast Startup אינו מוחק את קובץ ה-hibernation (hiberfil.sys), ולכן לא ישיג את זה. כדי לכווץ את קובץ ה-hibernation תוך שמירה על Fast Startup משתמשים ב-powercfg /h /type reduced; אם אין צורך ב-hibernation בכלל, משתמשים ב-powercfg /h off. אם פשוט "רוצים לאפס פעם אחת", restart או shutdown /s /t 0 עושים את העבודה בלי לשנות הגדרה.
אי אפשר להעיר מחשב כבוי עם Wake on LAN.
ב-Windows 10/11, Wake on LAN אינו נתמך לא מ-shutdown ברירת המחדל (hybrid shutdown) ולא מ-full shutdown (S5). כי מצב שבו המשתמש הורה על shutdown אמור לצרוך אפס חשמל, Windows אינו מכין (arm) את מתאם הרשת ל-wake. Wake on LAN זמין מ-sleep (S3) או כשהמשתמש בחר במפורש hibernation (S4). Hybrid shutdown הוא גם S4 במציאות, אבל Windows מכבה במפורש Wake on LAN רק במעבר ל-hybrid shutdown. למכונה שרוצים להעיר בלילה לעדכונים, מפעילים אותה ב-"Sleep" או "Hibernate" במקום "Shut down", או בודקים את יכולות ה-wake של ה-firmware. במכונות Modern Standby (S0 low-power idle), שאין להן S3, הרשת יכולה להיות מקור wake גם בזמן sleep, אבל האם באמת אפשר להעיר תלוי ב-NIC, ב-firmware, בתנאי החשמל ובמימוש של ה-OEM, לכן מאמתים במכונה אמיתית לפני שבונים את זה לתפעול.
בחרתי "Update and shut down" ב-Windows Update, אבל העדכון עדיין לא הסתיים באתחול הבא.
תיעוד התמיכה של Microsoft מציין במפורש שחלק מהעדכונים יכולים להסתיים רק באתחול שאחרי full shutdown, ועשויים לא להסתיים כשהאתחול עובר דרך Fast Startup (hibernation). כשרוצים שהעדכון ייגמר בוודאות, בוחרים "Update and restart". בסביבות שמנוהלות ב-Configuration Manager, ההשהיה הזו שופרה ב-Configuration Manager 2002 וב-Windows 10 21H1.
האפליקציה העסקית הפנימית שלנו קוראת ל-shutdown. איזה API נותן full shutdown?
InitiateSystemShutdownEx ו-InitiateSystemShutdown אף פעם לא הופכים ל-hybrid: עם bRebootAfterShutdown = FALSE הם מכבים חשמל (full shutdown), ועם TRUE הם עושים restart. InitiateShutdown מבצע shutdown ל-Fast Startup רק כשדגל SHUTDOWN_HYBRID משולב עם SHUTDOWN_POWEROFF (בשילוב עם SHUTDOWN_RESTART זה restart, ו-SHUTDOWN_NOREBOOT רק עוצר את המערכת בלי לכבות חשמל), ו-ExitWindowsEx רק כש-EWX_HYBRID_SHUTDOWN משולב עם EWX_SHUTDOWN (EWX_HYBRID_SHUTDOWN אינו מצוין לבדו). אם האפליקציה מממשת כפתור "כיבוי" של מחשב ציוד, קוראים ל-InitiateSystemShutdownEx עם bRebootAfterShutdown = FALSE, או ל-ExitWindowsEx עם EWX_POWEROFF בלבד (בלי EWX_HYBRID_SHUTDOWN; EWX_SHUTDOWN רק עוצר את המערכת עד נקודה שבה אפשר לכבות חשמל בבטחה ואינו מכבה), ומקבלים full shutdown בלי קשר להגדרה (שניהם מניחים שההרשאה SE_SHUTDOWN_NAME הופעלה עם AdjustTokenPrivileges: ExitWindowsEx על process token, InitiateSystemShutdownEx על ה-token האפקטיבי של ה-thread הקורא; אם היא נשארת כבויה הקריאה נכשלת). משורת הפקודה, shutdown /s /t 0 הוא full shutdown כברירת מחדל והופך ל-hybrid רק כשמוסיפים /hybrid.

פרופיל הכותב

עמוד היכרות עם כותב המאמר.

Go Komura

מנהל KomuraSoft LLC

מתמחה בפיתוח תוכנה עבור Windows, ייעוץ טכני וחקירת תקלות, בעיקר בפרויקטים עם מערכות קיימות ובאגים שקשה לשחזר.

קישורים ציבוריים

חזרה לבלוג