Difference between revisions of "Techwiki:Win32k/backtraces"

From ReactOS Wiki
Jump to: navigation, search
(Display drivers)
(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.

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