Difference between revisions of "Techwiki:Win32k/backtraces"
ThePhysicist (talk | contribs) (→Display drivers) |
ThePhysicist (talk | contribs) (→Mode switching) |
||
Line 284: | Line 284: | ||
1. Temporarily disable the current PDEV | 1. Temporarily disable the current PDEV | ||
+ | :DrvAssertMode(dhpdev0, FALSE); | ||
+ | |||
f70f1a10 bf93dff8 e148b010 00000000 e1486a2c win32k!WatchdogDrvAssertMode | f70f1a10 bf93dff8 e148b010 00000000 e1486a2c win32k!WatchdogDrvAssertMode | ||
f70f1a3c bf8ad224 e1488008 00000000 f70f1be4 win32k!DrvDisableDisplay+0xcf | f70f1a3c bf8ad224 e1488008 00000000 f70f1be4 win32k!DrvDisableDisplay+0xcf | ||
Line 292: | Line 294: | ||
f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a | f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a | ||
− | 2. Load new driver (if required by new PDEV instance) | + | 2. Load new driver (if required by new PDEV instance), not required in this case. |
− | not required | ||
3. Create new PDEV | 3. Create new PDEV | ||
+ | :dhpdev2 = DrvEnablePDEV(pdm2, pwszLogAddress2, HS_DDI_MAX, ...) | ||
f70f1818 bf8bef5a e16e9158 00000000 00000006 win32k!WatchdogDrvEnablePDEV | f70f1818 bf8bef5a e16e9158 00000000 00000006 win32k!WatchdogDrvEnablePDEV | ||
f70f1a14 bf8ad372 e1487368 e16e9158 00000000 win32k!PDEVOBJ::PDEVOBJ+0x1ad | f70f1a14 bf8ad372 e1487368 e16e9158 00000000 win32k!PDEVOBJ::PDEVOBJ+0x1ad | ||
Line 304: | Line 306: | ||
f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a | f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a | ||
+ | :DrvCompletePDEV(dhpdev2, hdev2); | ||
f70f183c bf8bf2c6 e11b7010 e11b6008 e11c8008 win32k!WatchdogDrvCompletePDEV | f70f183c bf8bf2c6 e11b7010 e11b6008 e11c8008 win32k!WatchdogDrvCompletePDEV | ||
f70f1a14 bf8ad372 e1487368 e16e9158 00000000 win32k!PDEVOBJ::PDEVOBJ+0x71d | f70f1a14 bf8ad372 e1487368 e16e9158 00000000 win32k!PDEVOBJ::PDEVOBJ+0x71d | ||
Line 312: | Line 315: | ||
f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a | f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a | ||
+ | :hsurf2 = DrvEnableSurface(dhpdev2); | ||
f70f1a28 bf892a69 e11b7010 e11c8008 00000000 win32k!WatchdogDrvEnableSurface | f70f1a28 bf892a69 e11b7010 e11c8008 00000000 win32k!WatchdogDrvEnableSurface | ||
f70f1a44 bf8ad435 f70f1be4 e135d6e8 00000000 win32k!PDEVOBJ::bMakeSurface+0x43 | f70f1a44 bf8ad435 f70f1be4 e135d6e8 00000000 win32k!PDEVOBJ::bMakeSurface+0x43 | ||
Line 328: | Line 332: | ||
7. Notify each driver instance of its new HDEV association | 7. Notify each driver instance of its new HDEV association | ||
+ | :DrvCompletePDEV(dhpdev1, hdev2); | ||
f70f1b94 bf94bc13 e148b010 e11b6008 e1474980 win32k!WatchdogDrvCompletePDEV | f70f1b94 bf94bc13 e148b010 e11b6008 e1474980 win32k!WatchdogDrvCompletePDEV | ||
f70f1c00 bf8b439c e1488008 e11b6008 817082c8 win32k!bDynamicModeChange+0x798 | f70f1c00 bf8b439c e1488008 e11b6008 817082c8 win32k!bDynamicModeChange+0x798 | ||
Line 335: | Line 340: | ||
(screen is black now) | (screen is black now) | ||
+ | :DrvCompletePDEV(dhpdev2, hdev1); | ||
f70f1b94 bf94bc23 e11b7010 e1488008 e1474980 win32k!WatchdogDrvCompletePDEV | f70f1b94 bf94bc23 e11b7010 e1488008 e1474980 win32k!WatchdogDrvCompletePDEV | ||
f70f1c00 bf8b439c e1488008 e11b6008 817082c8 win32k!bDynamicModeChange+0x7a8 | f70f1c00 bf8b439c e1488008 e11b6008 817082c8 win32k!bDynamicModeChange+0x7a8 | ||
Line 344: | Line 350: | ||
9. Disable surface | 9. Disable surface | ||
+ | :DrvDisableSurface(dhpdev1); | ||
f70f1ba8 bf8df941 e148b010 00000258 f70f1c0c win32k!WatchdogDrvDisableSurface | f70f1ba8 bf8df941 e148b010 00000258 f70f1c0c win32k!WatchdogDrvDisableSurface | ||
f70f1bc4 bf80d940 00000000 e1474994 e1474980 win32k!PDEVOBJ::vDisableSurface+0x7f | f70f1bc4 bf80d940 00000000 e1474994 e1474980 win32k!PDEVOBJ::vDisableSurface+0x7f | ||
Line 353: | Line 360: | ||
10. Disable PDEV | 10. Disable PDEV | ||
+ | :DrvDisablePDEV(dhpdev1); | ||
f70f1bc4 bf80d9a0 e148b010 e1474994 e1474980 win32k!WatchdogDrvDisablePDEV | f70f1bc4 bf80d9a0 e148b010 e1474994 e1474980 win32k!WatchdogDrvDisablePDEV | ||
f70f1bec bf93d2ca 00000000 e1714a08 00000000 win32k!PDEVOBJ::vUnreferencePdev+0x25b | f70f1bec bf93d2ca 00000000 e1714a08 00000000 win32k!PDEVOBJ::vUnreferencePdev+0x25b |
Revision as of 12:05, 26 August 2009
These backtraces were created in different situations, when working with GDI font and display drivers.
Contents
Font drivers
Windows first loads the font drivers:
DrvEnableDrv: fa0229e4 bf8ba311 00030101 0000000c fa022a04 0xbf9d4055 fa022a10 bf9ac89c 00000000 00000006 00000014 win32k!ldevLoadDriver+0x71 fa022c38 805dbe7d e1351f00 00000001 e1351ee8 win32k!FontDriverQueryRoutine+0x8f fa022c84 805dc098 fa022d08 e1351ee8 fa022ce4 nt!RtlpCallQueryRegistryRoutine+0x3b1 fa022ce8 bf8b72e8 00000000 00000084 00000000 nt!RtlQueryRegistryValues+0x18c fa022d48 bf8b71e0 fa022d64 8053c808 00050000 win32k!InitializeGreCSRSS+0xdd fa022d50 8053c808 00050000 00000058 0000005c win32k!NtUserInitialize+0x62
DrvEnablePDEV: fa0227ec bf86f6dc 00000000 00000000 00000006 0xbf9d403d fa0229e8 bf9ac8bd e134fcf0 00000000 00000000 win32k!PDEVOBJ::PDEVOBJ+0x1ad fa022c38 805dbe7d e1348220 00000001 e1348208 win32k!FontDriverQueryRoutine+0xac fa022c84 805dc098 fa022d08 e1348208 fa022ce4 nt!RtlpCallQueryRegistryRoutine+0x3b1 fa022ce8 bf8b72e8 00000000 00000084 00000000 nt!RtlQueryRegistryValues+0x18c fa022d48 bf8b71e0 fa022d64 8053c808 00050000 win32k!InitializeGreCSRSS+0xdd fa022d50 8053c808 00050000 00000058 0000005c win32k!NtUserInitialize+0x62
DrvCompletePDEV:
DrvLoadFontFile: f93fead0 bf8be275 00000001 e1472f58 e15f1818 0xbf9d4128 f93feb00 bf8be203 00000001 e1472f58 e15f1818 win32k!PDEVOBJ::LoadFontFile+0x3a f93feb38 bf8be566 f93fec88 00000013 e1472f58 win32k!vLoadFontFileView+0x12b f93febb4 bf8bf412 f93fec88 00000013 00000001 win32k!PUBLIC_PFTOBJ::bLoadFonts+0x1da f93febfc bf8bf344 f93fec88 00000013 00000001 win32k!GreAddFontResourceWInternal+0xab f93fed44 8053c808 000a1e90 00000013 00000001 win32k!NtGdiAddFontResourceW+0x172
DrvQueryFontFile:
DrvQueryFont: f8339afc bf8729ec 00000000 e1639410 00000001 0xbf9d44df f8339b20 bf8bf765 00000000 e1639410 00000001 win32k!PDEVOBJ::QueryFont+0x31 f8339b50 bf8be5ff f8339c88 00000003 00000000 win32k!PFFMEMOBJ::bLoadFontFileTable+0x45 f8339bb4 bf8bf412 f8339c88 00000013 00000001 win32k!PUBLIC_PFTOBJ::bLoadFonts+0x280 f8339bfc bf8bf344 f8339c88 00000013 00000001 win32k!GreAddFontResourceWInternal+0xab f8339d44 8053c808 000a1e90 00000013 00000001 win32k!NtGdiAddFontResourceW+0x172
DrvQueryFontTree: win32k!BmfdQueryFontTree: fa0129cc bf8fa495 00000000 e1375010 00000002 win32k!BmfdQueryFontTree fa0129f4 bf8f68ba 00000000 e1375010 00000002 win32k!PDEVOBJ::QueryFontTree+0x34 fa012a30 bf87281d 00000000 fa012b0c e1350008 win32k!PFEOBJ::pfdg+0x6a fa012a50 bf872c89 e1375490 e1373de4 e1373e14 win32k!bComputeGISET+0x40 fa012acc bf872e37 e1350008 00000002 00000000 win32k!PFEMEMOBJ::bInit+0x240 fa012b10 bf8bf78a 00000002 00000000 00000000 win32k!PFFMEMOBJ::bAddEntry+0x6c fa012b50 bf8be5ff fa012c88 00000006 00000000 win32k!PFFMEMOBJ::bLoadFontFileTable+0x81 fa012bb4 bf8bf412 fa012c88 00000020 00000001 win32k!PUBLIC_PFTOBJ::bLoadFonts+0x280 fa012bfc bf8bf344 fa012c88 00000020 00000001 win32k!GreAddFontResourceWInternal+0xab fa012d44 8053c808 00161e90 00000020 00000001 win32k!NtGdiAddFontResourceW+0x172
DrvQueryFontData, iMode = 3 f80edb44 bf8f6b26 e1363f18 e17fd008 00000003 win32k!PDEVOBJ::QueryFontData+0x3c f80edb78 bf8f7e6e e1359008 00000000 f80edd0c win32k!RFONTOBJ::bGetDEVICEMETRICS+0x49 f80edc20 bf8073fa f80edd0c f80edca8 e146fb30 win32k!RFONTOBJ::bRealizeFont+0x1eb f80edcb0 bf807462 e146fa10 00000000 00000002 win32k!RFONTOBJ::bInit+0x29a f80edcc8 bf8d5dcc f80edd0c 00000000 00000002 win32k!RFONTOBJ::vInit+0x16 f80edce4 bf8d5d7b e17fd008 20464643 00000000 win32k!ulGetFontData2+0x17 f80edd04 bf8d5d3e e17fc008 20464643 00000000 win32k!ulGetFontData+0x48 f80edd48 8053c808 5401018f 20464643 00000000 win32k!NtGdiGetFontData+0x26
DrvQueryFontCaps f80edb74 bf8f8010 00000002 f80edc0c 00000000 0xbf9d47df f80edc20 bf8073fa f80edd0c f80edca8 00000000 win32k!RFONTOBJ::bRealizeFont+0x3c7 f80edcb0 bf807462 e146fa10 00000000 00000002 win32k!RFONTOBJ::bInit+0x29a f80edcc8 bf8d5dcc f80edd0c 00000000 00000002 win32k!RFONTOBJ::vInit+0x16 f80edce4 bf8d5d7b e17fd008 20464643 00000000 win32k!ulGetFontData2+0x17 f80edd04 bf8d5d3e e17fc008 20464643 00000000 win32k!ulGetFontData+0x48 f80edd48 8053c808 5401018f 20464643 00000000 win32k!NtGdiGetFontData+0x26
DrvQueryFontData, iMode = 1, QFD_GLYPHANDBITMAP, hg=00FA0356, pgd=F8329B34, pv=00000000, cjSize=0 f8329ad4 bf8e80a2 e1366f18 e16ac478 00000001 0xbf9d49d7 f8329b04 bf8f6db4 e1366f18 e16ac478 00000001 win32k!PDEVOBJ::QueryFontData+0x3c f8329b78 bf8f80ed 00000002 00000000 f8329d0c win32k!RFONTOBJ::bInitCache+0xc9 f8329c20 bf8073fa f8329d0c f8329ca8 00000002 win32k!RFONTOBJ::bRealizeFont+0x51c f8329cb0 bf807462 e147a8f8 00000000 00000002 win32k!RFONTOBJ::bInit+0x29a f8329cc8 bf8d5dcc f8329d0c 00000000 00000002 win32k!RFONTOBJ::vInit+0x16 f8329ce4 bf8d5d7b e16ac478 20464643 00000000 win32k!ulGetFontData2+0x17 f8329d04 bf8d5d3e e16ac908 20464643 00000000 win32k!ulGetFontData+0x48 f8329d48 8053c808 0801015f 20464643 00000000 win32k!NtGdiGetFontData+0x26
DrvQueryFontData, iMode = 1, QFD_GLYPHANDBITMAP, hg=00FA045A, pgd=F832929C, pv=00000000, cjSize=0 f832923c bf8e80a2 e1366f18 e16ac478 00000001 0xbf9d49d7 f832926c bf8e8306 e1366f18 e16ac478 00000001 win32k!PDEVOBJ::QueryFontData+0x3c f83292e4 bf807530 f8329680 e16c6120 00000061 win32k!xInsertMetricsPlusRFONTOBJ+0xc4 f8329318 bf887fb4 0000001b e134c000 7ffdf22c win32k!RFONTOBJ::bGetGlyphMetricsPlus+0x180 f8329388 bf813323 f8329908 f8329680 000001a0 win32k!ESTROBJ::vCharPos_G2+0x109 f83293c4 bf8123e1 7ffdf22c 0000001b f8329908 win32k!ESTROBJ::vInit+0x421 f8329668 bf813b36 f8329908 00000000 00000046 win32k!GreExtTextOutWLocked+0x666 f83297d0 bf80dda0 f8329908 7ffdf1dc 0000008c win32k!GreBatchTextOut+0x344 f8329924 8053c7da 0000007a 0007fb34 0007fb4c win32k!NtGdiFlushUserBatch+0x11b
DrvQueryFontData, iMode = 1, QFD_GLYPHANDBITMAP, hg=00FA045A, pgd=E16C63A8, pv=E16A987C, cjSize=16 f832923c bf8e80a2 e1366f18 e16ac478 00000001 0xbf9d49d7 f832926c bf8e83f0 e1366f18 e16ac478 00000001 win32k!PDEVOBJ::QueryFontData+0x3c f83292e4 bf807530 f8329680 e16c6120 e16a987c win32k!xInsertMetricsPlusRFONTOBJ+0x11e f8329318 bf887fb4 0000001b e134c000 7ffdf22c win32k!RFONTOBJ::bGetGlyphMetricsPlus+0x180 f8329388 bf813323 f8329908 f8329680 000001a0 win32k!ESTROBJ::vCharPos_G2+0x109 f83293c4 bf8123e1 7ffdf22c 0000001b f8329908 win32k!ESTROBJ::vInit+0x421 f8329668 bf813b36 f8329908 00000000 00000046 win32k!GreExtTextOutWLocked+0x666 f83297d0 bf80dda0 f8329908 7ffdf1dc 0000008c win32k!GreBatchTextOut+0x344 f8329924 8053c7da 0000007a 0007fb34 0007fb4c win32k!NtGdiFlushUserBatch+0x11b
win32k!BmfdQueryFontDataTE: fa0129f4 bf8e80a2 e1362f18 e136c6c8 00000003 win32k!BmfdQueryFontDataTE fa012a24 bf8f6b26 e1362f18 e136c6c8 00000003 win32k!PDEVOBJ::QueryFontData+0x3c fa012a58 bf8f7e6e e135e008 00000000 fa012bcc win32k!RFONTOBJ::bGetDEVICEMETRICS+0x49 fa012b00 bf8073fa fa012bcc fa012b88 e13534a0 win32k!RFONTOBJ::bRealizeFont+0x1eb fa012b90 bf807462 e1353380 00000000 00000002 win32k!RFONTOBJ::bInit+0x29a fa012ba8 bf832b95 fa012bcc 00000000 00000002 win32k!RFONTOBJ::vInit+0x16 fa012bc4 bf906acb e136c9c8 fa012bdc bc5d1560 win32k!GreGetTextMetricsW+0x28 fa012c20 bf8a33a2 01010037 fa012c38 bc5d1560 win32k!_GetTextMetricsW+0x16 fa012c7c bf8b163f 01010037 fa012c9c bc5d0f1c win32k!GetCharDimensions+0x16 fa012cf0 bf8b1037 00000001 00000000 00000001 win32k!UpdateUserScreen+0x444 fa012d14 bf8b6285 00000000 00000000 e134f878 win32k!InitUserScreen+0x119 fa012d28 bf8b61bc 00000001 fa012d64 0015fd98 win32k!InitVideo+0xb1 fa012d48 bf8b71fe fa012d64 8053c808 00050000 win32k!UserInitialize+0x14d fa012d50 8053c808 00050000 00000058 0000005c win32k!NtUserInitialize+0x87
win32k!BmfdQueryFont: fa012afc bf8729ec 00000000 e1375010 00000002 win32k!BmfdQueryFont fa012b20 bf8bf765 00000000 e1375010 00000002 win32k!PDEVOBJ::QueryFont+0x31 fa012b50 bf8be5ff fa012c88 00000006 00000000 win32k!PFFMEMOBJ::bLoadFontFileTable+0x45 fa012bb4 bf8bf412 fa012c88 00000020 00000001 win32k!PUBLIC_PFTOBJ::bLoadFonts+0x280 fa012bfc bf8bf344 fa012c88 00000020 00000001 win32k!GreAddFontResourceWInternal+0xab fa012d44 8053c808 00161e90 00000020 00000001 win32k!NtGdiAddFontResourceW+0x172
win32k!BmfdQueryAdvanceWidthsTE: fa031f8c bf833c20 e1362f18 e136c6c8 00000001 win32k!BmfdQueryAdvanceWidthsTE fa031fb8 bf833dec e1362f18 e136c6c8 00000001 win32k!PDEVOBJ::QueryAdvanceWidths+0x37 fa032134 bf89e624 fa032174 00000100 fa032180 win32k!RFONTOBJ::bGetWidthTable+0x82 fa032484 bf89e453 01010052 fa0324a4 8053c808 win32k!iGetPublicWidthTable+0x221 fa032490 8053c808 01010052 00000000 00000000 win32k!NtGdiSetupPublicCFONT+0x16
Display drivers
Loading the driver
DrvEnableDriver: f9bdc980 bf8ba311 00030101 0000000c f9bdc9a0 0xbfaba9ae f9bdc9ac bf8ba3c6 00000000 00000001 e13d5f80 win32k!ldevLoadDriver+0x71 f9bdc9c4 bf8bd52d e13d1ae8 8163ac68 f9bdc9ec win32k!ldevGetDriverModes+0x1b f9bdc9f4 bf8b8cde 00000000 00000000 f9bdcbf0 win32k!DrvBuildDevmodeList+0xa4 f9bdca7c bf8b3221 e13d5f80 f9bdcb0c f9bdcad4 win32k!DrvProbeAndCaptureDevmode+0x408 f9bdcbf4 bf8b9423 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x42d f9bdcce8 bf8b624e 00000000 00000000 00000000 win32k!DrvChangeDisplaySettings+0x2e5 f9bdcd28 bf8b61bc 00000001 f9bdcd64 0015fd98 win32k!InitVideo+0x3e f9bdcd48 bf8b71fe f9bdcd64 804de7ec 00050000 win32k!UserInitialize+0x14d f9bdcd50 804de7ec 00050000 00000058 0000005c win32k!NtUserInitialize+0x87
DrvGetModes: (ask for size?) f9bdc9a0 bf8ba3e0 8163ac68 00000000 00000000 0xbfabaf90 f9bdc9c4 bf8bd52d e14c6570 8163ac68 f9bdc9ec win32k!ldevGetDriverModes+0x39 f9bdc9f4 bf8b8cde 00000000 00000000 f9bdcbf0 win32k!DrvBuildDevmodeList+0xa4 f9bdca7c bf8b3221 e13d5f80 f9bdcb0c f9bdcad4 win32k!DrvProbeAndCaptureDevmode+0x408 f9bdcbf4 bf8b9423 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x42d f9bdcce8 bf8b624e 00000000 00000000 00000000 win32k!DrvChangeDisplaySettings+0x2e5 f9bdcd28 bf8b61bc 00000001 f9bdcd64 0015fd98 win32k!InitVideo+0x3e f9bdcd48 bf8b71fe f9bdcd64 804de7ec 00050000 win32k!UserInitialize+0x14d f9bdcd50 804de7ec 00050000 00000058 0000005c win32k!NtUserInitialize+0x87
DrvGetModes: f9bdc9a0 bf8ba412 8163ac68 000006e0 e14e0008 0xbfabaf90 f9bdc9c4 bf8bd52d e14c6570 8163ac68 f9bdc9ec win32k!ldevGetDriverModes+0x7a f9bdc9f4 bf8b8cde 00000000 00000000 f9bdcbf0 win32k!DrvBuildDevmodeList+0xa4 f9bdca7c bf8b3221 e13d5f80 f9bdcb0c f9bdcad4 win32k!DrvProbeAndCaptureDevmode+0x408 f9bdcbf4 bf8b9423 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x42d f9bdcce8 bf8b624e 00000000 00000000 00000000 win32k!DrvChangeDisplaySettings+0x2e5 f9bdcd28 bf8b61bc 00000001 f9bdcd64 0015fd98 win32k!InitVideo+0x3e f9bdcd48 bf8b71fe f9bdcd64 804de7ec 00050000 win32k!UserInitialize+0x14d f9bdcd50 804de7ec 00050000 00000058 0000005c win32k!NtUserInitialize+0x87
DrvDisableDriver f9c0c998 bf8b338c bf9d7f62 00000000 00000000 0xbf9d7a0f f9c0c9ac bf8b4ffd e1484008 00000000 e1363988 win32k!ldevUnloadImage+0x2d f9c0c9c4 bf8b80ea e1484008 81659040 f9c0c9ec win32k!ldevGetDriverModes+0x82 f9c0c9f4 bf8b38cf 00000000 00000000 f9c0cbf0 win32k!DrvBuildDevmodeList+0xa4 f9c0ca7c bf8adde4 e1363988 f9c0cb0c f9c0cad4 win32k!DrvProbeAndCaptureDevmode+0x408 f9c0cbf4 bf8b4016 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x42d f9c0cce8 bf8b0b0d 00000000 00000000 00000000 win32k!DrvChangeDisplaySettings+0x2e5 f9c0cd28 bf8b0a7b 00000001 f9c0cd64 0015fd98 win32k!InitVideo+0x3e f9c0cd48 bf8b1def f9c0cd64 804de7ec 00050000 win32k!UserInitialize+0x14d f9c0cd50 804de7ec 00050000 00000054 00000058 win32k!NtUserInitialize+0x87 f9c0cd50 7c91ebab 00050000 00000054 00000058 nt!KiFastCallEntry+0xf8 0015fdf0 7c93b729 001638e0 0016274d 75b084eb ntdll!KiIntSystemCall+0x6 0015fdb0 75ae3472 00000000 00000000 0016274d ntdll!RtlCharToInteger+0x11f 0015fe78 7c9205c8 00160178 0015ff50 7c920551 0x75ae3472 0015ff74 75ae30f3 0000000a 001624f0 7c91e62d ntdll!RtlpFreeToHeapLookaside+0x22 0015ff88 4a68115d 0000000a 001624f0 00000005 0x75ae30f3 0015ffa8 4a6818d7 0000000a 001624f0 0016251c 0x4a68115d 0015fff4 00000000 7ffde000 000000c8 0000019b 0x4a6818d7
Second pass
DrvEnableDriver: f9bdc980 bf8ba311 00030101 0000000c f9bdc9a0 0xbfaba9ae f9bdc9ac bf8ba3c6 00000000 00000001 e13d5f80 win32k!ldevLoadDriver+0x71 f9bdc9c4 bf8bd52d e13d1ae8 8163ac68 f9bdc9ec win32k!ldevGetDriverModes+0x1b f9bdc9f4 bf8b8cde 00000000 00000000 f9bdcbf0 win32k!DrvBuildDevmodeList+0xa4 f9bdca7c bf8b3221 e13d5f80 f9bdcb0c f9bdcad4 win32k!DrvProbeAndCaptureDevmode+0x408 f9bdcbf4 bf8b9423 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x42d f9bdcce8 bf8b624e 00000000 00000000 00000000 win32k!DrvChangeDisplaySettings+0x2e5 f9bdcd28 bf8b61bc 00000001 f9bdcd64 0015fd98 win32k!InitVideo+0x3e f9bdcd48 bf8b71fe f9bdcd64 804de7ec 00050000 win32k!UserInitialize+0x14d f9bdcd50 804de7ec 00050000 00000058 0000005c win32k!NtUserInitialize+0x87
DrvEnablePDEV: f9bdc7c4 bf8b251b e14c6ae0 00000000 00000006 0xbfabaa6a f9bdc824 bf86f6dc e14c6ae0 00000000 00000006 win32k!WatchdogDrvEnablePDEV+0x6c f9bdca20 bf8b27b0 e14cecf0 e14c6ae0 00000000 win32k!PDEVOBJ::PDEVOBJ+0x1ad f9bdca7c bf8b3272 e13d5f80 e13d00b0 e14c6ae0 win32k!hCreateHDEV+0x30c f9bdcbf4 bf8b9423 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x4dc f9bdcce8 bf8b624e 00000000 00000000 00000000 win32k!DrvChangeDisplaySettings+0x2e5 f9bdcd28 bf8b61bc 00000001 f9bdcd64 0015fd98 win32k!InitVideo+0x3e f9bdcd48 bf8b71fe f9bdcd64 804de7ec 00050000 win32k!UserInitialize+0x14d f9bdcd50 804de7ec 00050000 00000058 0000005c win32k!NtUserInitialize+0x87
DrvCompletePDEV: f9bdc810 bf8b4a5a e14d1010 e14d0008 00000001 0xbfababd5 f9bdc848 bf86fa48 e14d1010 e14d0008 e14cf008 win32k!WatchdogDrvCompletePDEV+0x53 f9bdca20 bf8b27b0 e14cecf0 e14c6ae0 00000000 win32k!PDEVOBJ::PDEVOBJ+0x71d f9bdca7c bf8b3272 e13d5f80 e13d00b0 e14c6ae0 win32k!hCreateHDEV+0x30c f9bdcbf4 bf8b9423 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x4dc f9bdcce8 bf8b624e 00000000 00000000 00000000 win32k!DrvChangeDisplaySettings+0x2e5 f9bdcd28 bf8b61bc 00000001 f9bdcd64 0015fd98 win32k!InitVideo+0x3e f9bdcd48 bf8b71fe f9bdcd64 804de7ec 00050000 win32k!UserInitialize+0x14d f9bdcd50 804de7ec 00050000 00000058 0000005c win32k!NtUserInitialize+0x87
DrvEnableSurface: f9bdc9fc bf8b4beb e14d1010 e14cf008 f9bdca9c 0xbfabac71 f9bdca34 bf892607 e14d1010 e14cf008 00000000 win32k!WatchdogDrvEnableSurface+0x36 f9bdca50 bf8b2873 f9bdcbf0 e13d5f80 00000000 win32k!PDEVOBJ::bMakeSurface+0x43 f9bdca7c bf8b3272 e13d5f80 e13d00b0 e14c6ae0 win32k!hCreateHDEV+0x3a9 f9bdcbf4 bf8b9423 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x4dc f9bdcce8 bf8b624e 00000000 00000000 00000000 win32k!DrvChangeDisplaySettings+0x2e5 f9bdcd28 bf8b61bc 00000001 f9bdcd64 0015fd98 win32k!InitVideo+0x3e f9bdcd48 bf8b71fe f9bdcd64 804de7ec 00050000 win32k!UserInitialize+0x14d
Fullscreen console mode
Switching to fullscreen console:
f731ac60 bf93dff8 e148b010 00000000 00000000 win32k!WatchdogDrvAssertMode f731ac8c bf93e110 e1488008 00000000 bc6306e8 win32k!DrvDisableDisplay+0xcf f731acb0 bf9112af e1488008 00000001 bf83d1bf win32k!DrvDisableMDEV+0x97 f731acbc bf83d1bf 00000000 00000001 bc645098 win32k!SafeDisableMDEV+0x18 f731ace8 bf918d39 bc645098 02000001 f731ad64 win32k!xxxMakeWindowForegroundWithState+0x176 f731ad14 bf87beeb 00000001 000300ac f731ad64 win32k!xxxbFullscreenSwitch+0xa9 f731ad38 bf87be17 00000008 0115fa70 0000000c win32k!xxxConsoleControl+0x16e f731ad50 804de7ec 00000008 0115fa70 0000000c win32k!NtUserConsoleControl+0x2e
Back to normal
f731ac78 bf93d230 e148b010 00000001 e1474994 win32k!WatchdogDrvAssertMode f731ac90 bf93de0e e1488008 bc6306e8 bc642e80 win32k!DrvEnableDisplay+0x78 f731acb0 bf91127a e1488008 00000001 bf83d20f win32k!DrvEnableMDEV+0x45 f731acbc bf83d20f 00000000 00000001 bc642e80 win32k!SafeEnableMDEV+0x21 f731ace8 bf918d55 bc642e80 01000000 f731ad64 win32k!xxxMakeWindowForegroundWithState+0x1e7 f731ad14 bf87beeb 00000000 000700ac f731ad64 win32k!xxxbFullscreenSwitch+0xc5 f731ad38 bf87be17 00000008 0115fa70 0000000c win32k!xxxConsoleControl+0x16e f731ad50 804de7ec 00000008 0115fa70 0000000c win32k!NtUserConsoleControl+0x2e
Back to normal Window, by closing console
f731a6cc bf93d230 e148b010 00000001 e1474994 win32k!WatchdogDrvAssertMode f731a6e4 bf93de0e e1488008 bc6306e8 bc645098 win32k!DrvEnableDisplay+0x78 f731a704 bf91127a e1488008 00000001 bf83d20f win32k!DrvEnableMDEV+0x45 f731a710 bf83d20f 00000000 e16e4a20 e1681d10 win32k!SafeEnableMDEV+0x21 f731a73c bf86aa9d 00000000 01000000 bc63a1d8 win32k!xxxMakeWindowForegroundWithState+0x1e7 f731a79c bf86b22f bc63a1d8 e16e4a20 00000000 win32k!xxxSetForegroundWindow2+0x105 f731a7cc bf86853e bc63a1d8 00000000 00000003 win32k!xxxSetForegroundWindow+0x164 f731a7f8 bf867457 00000000 00000003 bf866c76 win32k!xxxActivateWindow+0x1a0 f731a848 bf866c93 00000000 0115fbc0 f731a864 win32k!xxxDestroyWindow+0x2a4 f731a858 804de7ec 000300ac 0115fbcc 7c91ebab win32k!NtUserDestroyWindow+0x21
Mode switching
See: http://msdn.microsoft.com/en-us/library/ms797850.aspx
1. Temporarily disable the current PDEV
- DrvAssertMode(dhpdev0, FALSE);
f70f1a10 bf93dff8 e148b010 00000000 e1486a2c win32k!WatchdogDrvAssertMode f70f1a3c bf8ad224 e1488008 00000000 f70f1be4 win32k!DrvDisableDisplay+0xcf f70f1a70 bf8ade35 e135d6e8 e10d0cd8 e16e9158 win32k!hCreateHDEV+0x151 f70f1be8 bf8b4778 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x4dc f70f1cdc bf8b69dd 00000000 e1488008 00000000 win32k!DrvChangeDisplaySettings+0x251 f70f1d20 bf8b68d0 00000000 00000000 00000000 win32k!xxxUserChangeDisplaySettings+0x141 f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a
2. Load new driver (if required by new PDEV instance), not required in this case.
3. Create new PDEV
- dhpdev2 = DrvEnablePDEV(pdm2, pwszLogAddress2, HS_DDI_MAX, ...)
f70f1818 bf8bef5a e16e9158 00000000 00000006 win32k!WatchdogDrvEnablePDEV f70f1a14 bf8ad372 e1487368 e16e9158 00000000 win32k!PDEVOBJ::PDEVOBJ+0x1ad f70f1a70 bf8ade35 e135d6e8 e10d0cd8 e16e9158 win32k!hCreateHDEV+0x30c f70f1be8 bf8b4778 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x4dc f70f1cdc bf8b69dd 00000000 e1488008 00000000 win32k!DrvChangeDisplaySettings+0x251 f70f1d20 bf8b68d0 00000000 00000000 00000000 win32k!xxxUserChangeDisplaySettings+0x141 f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a
- DrvCompletePDEV(dhpdev2, hdev2);
f70f183c bf8bf2c6 e11b7010 e11b6008 e11c8008 win32k!WatchdogDrvCompletePDEV f70f1a14 bf8ad372 e1487368 e16e9158 00000000 win32k!PDEVOBJ::PDEVOBJ+0x71d f70f1a70 bf8ade35 e135d6e8 e10d0cd8 e16e9158 win32k!hCreateHDEV+0x30c f70f1be8 bf8b4778 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x4dc f70f1cdc bf8b69dd 00000000 e1488008 00000000 win32k!DrvChangeDisplaySettings+0x251 f70f1d20 bf8b68d0 00000000 00000000 00000000 win32k!xxxUserChangeDisplaySettings+0x141 f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a
- hsurf2 = DrvEnableSurface(dhpdev2);
f70f1a28 bf892a69 e11b7010 e11c8008 00000000 win32k!WatchdogDrvEnableSurface f70f1a44 bf8ad435 f70f1be4 e135d6e8 00000000 win32k!PDEVOBJ::bMakeSurface+0x43 f70f1a70 bf8ade35 e135d6e8 e10d0cd8 e16e9158 win32k!hCreateHDEV+0x3a9 f70f1be8 bf8b4778 00000000 00000000 00000001 win32k!DrvCreateMDEV+0x4dc f70f1cdc bf8b69dd 00000000 e1488008 00000000 win32k!DrvChangeDisplaySettings+0x251 f70f1d20 bf8b68d0 00000000 00000000 00000000 win32k!xxxUserChangeDisplaySettings+0x141 f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a
4. Get DirectDraw information 5. Enable DirectDraw Not traced
6. Copy old PDEV state to new PDEV instance Call DrvResetPDEV.
7. Notify each driver instance of its new HDEV association
- DrvCompletePDEV(dhpdev1, hdev2);
f70f1b94 bf94bc13 e148b010 e11b6008 e1474980 win32k!WatchdogDrvCompletePDEV f70f1c00 bf8b439c e1488008 e11b6008 817082c8 win32k!bDynamicModeChange+0x798 f70f1cdc bf8b69dd 002a0088 f70f1c1c 00000000 win32k!DrvChangeDisplaySettings+0x4de f70f1d20 bf8b68d0 00000000 00000000 00000000 win32k!xxxUserChangeDisplaySettings+0x141 f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a
(screen is black now)
- DrvCompletePDEV(dhpdev2, hdev1);
f70f1b94 bf94bc23 e11b7010 e1488008 e1474980 win32k!WatchdogDrvCompletePDEV f70f1c00 bf8b439c e1488008 e11b6008 817082c8 win32k!bDynamicModeChange+0x7a8 f70f1cdc bf8b69dd 002a0088 f70f1c1c 00000000 win32k!DrvChangeDisplaySettings+0x4de f70f1d20 bf8b68d0 00000000 00000000 00000000 win32k!xxxUserChangeDisplaySettings+0x141 f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a
8. Disable DirectDraw
9. Disable surface
- DrvDisableSurface(dhpdev1);
f70f1ba8 bf8df941 e148b010 00000258 f70f1c0c win32k!WatchdogDrvDisableSurface f70f1bc4 bf80d940 00000000 e1474994 e1474980 win32k!PDEVOBJ::vDisableSurface+0x7f f70f1bec bf93d2ca 00000000 e1714a08 00000000 win32k!PDEVOBJ::vUnreferencePdev+0x1fb f70f1c04 bf8b4218 e11b6008 817082c8 00000001 win32k!DrvDestroyMDEV+0x40 f70f1cdc bf8b69dd 00000001 f70f1c1c 00000000 win32k!DrvChangeDisplaySettings+0xa5a f70f1d20 bf8b68d0 00000000 00000000 00000000 win32k!xxxUserChangeDisplaySettings+0x141 f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a
10. Disable PDEV
- DrvDisablePDEV(dhpdev1);
f70f1bc4 bf80d9a0 e148b010 e1474994 e1474980 win32k!WatchdogDrvDisablePDEV f70f1bec bf93d2ca 00000000 e1714a08 00000000 win32k!PDEVOBJ::vUnreferencePdev+0x25b f70f1c04 bf8b4218 e11b6008 817082c8 00000001 win32k!DrvDestroyMDEV+0x40 f70f1cdc bf8b69dd 00000001 f70f1c1c 00000000 win32k!DrvChangeDisplaySettings+0xa5a f70f1d20 bf8b68d0 00000000 00000000 00000000 win32k!xxxUserChangeDisplaySettings+0x141 f70f1d48 804de7ec 00000000 00000000 00000000 win32k!NtUserChangeDisplaySettings+0x4a