Отладочные сообщения DirectX
Вероятно, вы уже заметили, что при запуске приложений DirectX в окне вывода отладчика VisualC++ появляются диагностические сообщения. По умолчанию отладочные версии компонентов DirectX сообщают таким образом о важных внутренних событиях — например, об ошибках. Типичное окно вывода для приложения DirectDraw изображено на рис. А.10.
СОВЕТ
Прислушивайтесь к крикам DirectX
При установке runtime-части DirectX на рабочий компьютер возникает искушение установить окончательные версии DLL вместо отладочных (во время инсталляции вам предлагается выбрать нужный вариант). Не поддавайтесь соблазну и не устанавливайте окончательные версии! Да, они действительно работают чуть быстрее, и именно с ними будут работать пользователи вашего приложения, но при этом вы лишитесь отладочного вывода. Если во время работы над программой возникнут проблемы, вы так и не узнаете, что же DirectX пытается вам сказать.
Рис. А.10. Типичное окно вывода в отладчике
Возможно, вы не знаете, что детальность этих сообщений тоже можно изменять. В каждой из библиотек DirectDraw, Direct3D и DirectSound можно выбрать пять разных уровней отладочных сообщений. Чтобы настроить уровень отладочных сообщений, выберите значок DirectX в Control Panel и перейдите на вкладку нужного компонента DirectX. Диалоговое окно DirectX Properties с выбранной вкладкой DirectDraw изображено на рис. А.11.
Рис. А.11. Окно DirectX Properties (запускается из Control Panel)
Для библиотеки DirectDraw нажмите кнопку Advanced Settings — откроется окно DirectDraw Advanced Settings. Нужный уровень отладочных сообщений устанавливается с помощью слайдера Debug Level. Окно DirectDraw Advanced Settings изображено на рис. А.12.
Рис. А.12. Окно DirectDraw Advanced Settings
При максимальном уровне отладки каждое приложение DirectDraw, запущенное в отладчике, выдает весьма обширный и подробный протокол. Вывод протокола снижает быстродействие программы, так что максимальный уровень не стоит держать включенным постоянно.
С другой стороны, он сильно помогает в затяжной борьбе с DirectDraw. Чтобы показать, насколько подробная информация выдается при максимальном уровне отладки, я приведу отладочный протокол для небольшого полноэкранного приложения DirectDraw. Обратите внимание на то, что листинг раскрывает некоторые внутренние тонкости работы DirectDraw. Подробный отладочный протокол приведен в листинге А.1.
Листинг А.1. Подробный отладочный протокол DirectDraw
DDraw:====> ENTER: DLLMAIN(baaa12c0): Process Attach: fff00c89, tid=fff04bf1 DDraw:Thunk connects DDraw:Signalling DDHELP that a new process has connected DDraw:====> EXIT: DLLMAIN(baaa12c0): Process Attach: fff00c89 DDraw:createDC(R3D) DDraw:Enumerating GUID aba52f41-f744-11cf-b4-52-00-00-1d-1b-41-26 DDraw: Driver Name = R3D DDraw: Description = Righteous 3D DirectX II Driver DDraw:DeleteDC 0x179e DDraw:createDC(mm3dfx) DDraw:Enumerating GUID 3a0cfd01-9320-11cf-ac-a1-00-a0-24-13-c2-e2 DDraw: Driver Name = mm3dfx DDraw: Description = 3Dfx Interactive DirectX Driver DDraw:DeleteDC 0x179e DDraw:Only one Display device in the current system. DDraw:DirectDrawCreate entered DDraw: GUID *:00000000, LPLPDD:0064f870, pUnkOuter:00000000 DDraw:Registry already scanned, not doing it again DDraw:full name = C:\SAMPLE\DEBUG\SAMPLE.EXE DDraw:name = SAMPLE.EXE DDraw:DirectDrawCreate: pid = fff00c89 DDraw:Reading Registry DDraw: ModeXOnly: 0 DDraw: EmulationOnly: 0 DDraw: ShowFrameRate: 0 DDraw: EnablePrintScreen: 0 DDraw: DisableMMX: 0 DDraw: DisableWiderSurfaces:0 DDraw: DisableNoSysLock:0 DDraw: ForceNoSysLock:0 DDraw:Signalling DDHELP to create a new DC DDraw:createDC(display) DDraw:DIRECTDRAW driver is wrong version, got 0x5250, expected 0x0100 DDraw:getDisplayMode: DDraw: bpp=8, refresh=0 DDraw: dwHeight=600, dwWidth=800 DDraw: lStride=0 DDraw:Driver says nummodes=9 DDraw:Enum Display Settings says nummodes=9 DDraw:dwModeIndex = 1 DDraw:Masks for current mode are: 00000000 00000000 00000000 DDraw:DirectDrawObjectCreate: oldpdd == 00000000, reset=0 DDraw:DIRECTDRAW object passed in = 00000000 DDraw:oldpdd == 00000000, reset=0 DDraw:Driver Object: 2256 base bytes DDraw:dwReserved3 of DDrawGbl is set to 0x0 DDraw:oldpdd == NULL || reset DDraw:Driver can't blt DDraw:pddd->lp16DD = 40cf0000 DDraw:Adding ModeX mode 320x200x8 (standard VGA flag is 0) DDraw:Adding ModeX mode 320x240x8 (standard VGA flag is 0) DDraw:Adding ModeX mode 320x200x8 (standard VGA flag is 1) DDraw:All video memory heaps have been disabled. OS has no AGP support DDraw:Current and Original Mode = 1 DDraw:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ MODE INDEX = 1 DDraw:DDHALInfo contains D3D pointers: 00000000 00000000 DDraw:createDC(display) DDraw:NOT Setting DDCAPS_BANKSWITCHED DDraw:DeleteDC 0x179e DDraw:Taking the Win16 lock may not be necessary for VRAM locks DDraw:DirectDrawObjectCreate: Returning global object 82dc11f8 DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0x175e DDraw:DeleteDC 0x179e DDraw:Primary's rect is 0, 0, 800, 600 DDraw:HELInit for DISPLAY Driver: Reference Count = 1 DDraw:createDC(display) DDraw:DeleteDC 0x179e DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0x175e DDraw:DeleteDC 0x179e DDraw:***New local allocated 82dc1b1c for global pdrv 82dc11f8 DDraw:New driver object created, interface ptr = 82dc1b84 DDraw: DirectDrawCreate succeeds, and returns ddraw pointer 82dc1b84 DDraw:New driver interface created, 82dc1bb0 DDraw:DD_AddRef, pid=fff00c89, obj=82dc1bb0 DDraw:DD_AddRef, Reference Count: Global = 2 Local = 2 Int = 1 DDraw:DD_Release, pid=fff00c89, obj=82dc1b84 DDraw:DD_Release, Ref Count: Global = 1 Local = 1 Interface = 0 DDraw:*********** ALLOWING MODE X AND VGA MODES DDraw:DD_GetDeviceRect: display [0 0 800 600] DDraw:Subclassing window 00000aac DDraw:StartExclusiveMode DDraw:******** invalidating all surfaces DDraw:Enumerating mode 0. 640x480 DDraw:Enumerating mode 1. 800x600 DDraw:Enumerating mode 2. 1024x768 DDraw:Enumerating mode 3. 1280x1024 DDraw:Enumerating mode 4. 640x480 DDraw:Enumerating mode 5. 800x600 DDraw:Enumerating mode 6. 1024x768 DDraw:Enumerating mode 7. 640x480 DDraw:Enumerating mode 8. 800x600 DDraw:Enumerating mode 9. 320x200 DDraw:Enumerating mode 10. 320x240 DDraw:Enumerating mode 11. 320x200 DDraw:Looking for 640x480x8 DDraw:Found 640x480x8x (flags = 1) DDraw:Found 800x600x8x (flags = 1) DDraw:Found 1024x768x8x (flags = 1) DDraw:Found 1280x1024x8x (flags = 1) DDraw:Found 640x480x16x (flags = 0) DDraw:Found 800x600x16x (flags = 0) DDraw:Found 1024x768x16x (flags = 0) DDraw:Found 640x480x32x (flags = 0) DDraw:Found 800x600x32x (flags = 0) DDraw:Found 320x200x8x (flags = 3) DDraw:Found 320x240x8x (flags = 3) DDraw:Found 320x200x8x (flags = 11) DDraw:Calling HEL SetMode DDraw:width = 640 DDraw:height = 480 DDraw:bpp = 8 DDraw:WM_DISPLAYCHANGE: 640x480x8 DDraw:DD_GetDeviceRect: display [0 0 640 480] DDraw:WM_SIZE hWnd=AAC wp=0000, lp=01E00280 DDraw:WM_SIZE: Window restored, NOT sending WM_ACTIVATEAPP DDraw:createDC(display) DDraw:DeleteDC 0x1712 DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0x179e DDraw:DeleteDC 0x1712 DDraw:createDC(display) DDraw:getDisplayMode: DDraw: bpp=8, refresh=0 DDraw: dwHeight=480, dwWidth=640 DDraw: lStride=0 DDraw:Driver says nummodes=9 DDraw:Enum Display Settings says nummodes=9 DDraw:dwModeIndex = 0 DDraw:Masks for current mode are: 00000000 00000000 00000000 DDraw:DirectDrawObjectCreate: oldpdd == 82dc11f8, reset=1 DDraw:DIRECTDRAW object passed in = 82dc11f8 DDraw:oldpdd == 82dc11f8, reset=1 DDraw:Driver Object: 2256 base bytes DDraw:dwReserved3 of DDrawGbl is set to 0x0 DDraw:oldpdd == NULL || reset DDraw:Driver can't blt DDraw:******** invalidating all surfaces DDraw:All video memory heaps have been disabled. OS has no AGP support DDraw:Current and Original Mode = 0 DDraw:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ MODE INDEX = 0 DDraw:DDHALInfo contains D3D pointers: 00000000 00000000 DDraw:createDC(display) DDraw:NOT Setting DDCAPS_BANKSWITCHED DDraw:DeleteDC 0x179e DDraw:Taking the Win16 lock may not be necessary for VRAM locks DDraw:DirectDrawObjectCreate: Returning global object 82dc11f8 DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0x1776 DDraw:DeleteDC 0x179e DDraw:Primary's rect is 0, 0, 640, 480 DDraw:DeleteDC 0x1712 DDraw:Looking for 640x480x16 DDraw:Found 640x480x8x (flags = 1) DDraw:Found 800x600x8x (flags = 1) DDraw:Found 1024x768x8x (flags = 1) DDraw:Found 1280x1024x8x (flags = 1) DDraw:Found 640x480x16x (flags = 0) DDraw:Found 800x600x16x (flags = 0) DDraw:Found 1024x768x16x (flags = 0) DDraw:Found 640x480x32x (flags = 0) DDraw:Found 800x600x32x (flags = 0) DDraw:Found 320x200x8x (flags = 3) DDraw:Found 320x240x8x (flags = 3) DDraw:Found 320x200x8x (flags = 11) DDraw:Calling HEL SetMode DDraw:width = 640 DDraw:height = 480 DDraw:bpp = 16 DDraw:Window 00000ac4 is on top of us!! DDraw:Window 00000ac4 is on top of us!! DDraw:Window 00000ac4 is on top of us!! DDraw:WM_DISPLAYCHANGE: 640x480x16 DDraw:DD_GetDeviceRect: display [0 0 640 480] DDraw:createDC(display) DDraw:DeleteDC 0x172a DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0xc96 DDraw:DeleteDC 0x172a DDraw:createDC(display) DDraw:getDisplayMode: DDraw: bpp=16, refresh=0 DDraw: dwHeight=480, dwWidth=640 DDraw: lStride=0 DDraw:Driver says nummodes=9 DDraw:Enum Display Settings says nummodes=9 DDraw:dwModeIndex = 4 DDraw:Masks for current mode are: 00007c00 000003e0 0000001f DDraw:DirectDrawObjectCreate: oldpdd == 82dc11f8, reset=1 DDraw:DIRECTDRAW object passed in = 82dc11f8 DDraw:oldpdd == 82dc11f8, reset=1 DDraw:Driver Object: 2256 base bytes DDraw:dwReserved3 of DDrawGbl is set to 0x0 DDraw:oldpdd == NULL || reset DDraw:Driver can't blt DDraw:******** invalidating all surfaces DDraw:All video memory heaps have been disabled. OS has no AGP support DDraw:Current and Original Mode = 4 DDraw:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ MODE INDEX = 4 DDraw:DDHALInfo contains D3D pointers: 00000000 00000000 DDraw:createDC(display) DDraw:NOT Setting DDCAPS_BANKSWITCHED DDraw:DeleteDC 0xc96 DDraw:Taking the Win16 lock may not be necessary for VRAM locks DDraw:DirectDrawObjectCreate: Returning global object 82dc11f8 DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0x179e DDraw:DeleteDC 0xc96 DDraw:Primary's rect is 0, 0, 640, 480 DDraw:DeleteDC 0x172a DDraw:82dc1bb0->CreateSurface DDraw: DDSURFACEDESC->dwBackBufferCount = 1 DDraw: DDSURFACEDESC->lpSurface = 00000000 DDraw: DDSCAPS_COMPLEX DDraw: DDSCAPS_FLIP DDraw: DDSCAPS_PRIMARYSURFACE DDraw:******** invalidating all primary surfaces DDraw:#### Using GDI screen bpp = 16 DDraw:*** allocating primary surface DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0x179e DDraw:DeleteDC 0xc96 DDraw:#### Using GDI screen bpp = 16 DDraw:*** allocating a backbuffer DDraw:HEL:About to allocate 614400 bytes for the surface DDraw:DD_Surface_AddRef, Reference Count: Global = 1 Local = 1 Int = 1 DDraw:DD_Surface_AddRef, Reference Count: Global = 1 Local = 1 Int = 1 DDraw: CreateSurface returns 00000000 (0) DDraw:DD_Surface_AddRef, Reference Count: Global = 2 Local = 2 Int = 2 DDraw:82dc1bb0->CreateSurface DDraw: DDSURFACEDESC->dwHeight = 240 DDraw: DDSURFACEDESC->dwWidth = 320 DDraw: DDSURFACEDESC->lpSurface = 00000000 DDraw: DDSCAPS_OFFSCREENPLAIN DDraw: DDSCAPS_VIDEOMEMORY DDraw:No hardware support DDraw: CreateSurface returns 88760233 (563) DDraw:82dc1bb0->CreateSurface DDraw: DDSURFACEDESC->dwHeight = 240 DDraw: DDSURFACEDESC->dwWidth = 320 DDraw: DDSURFACEDESC->lpSurface = 00000000 DDraw: DDSCAPS_OFFSCREENPLAIN DDraw: DDSCAPS_SYSTEMMEMORY DDraw:Forcing pixel format for explicit system memory surface DDraw:#### Got surface pixel format bpp = 16 DDraw:*** allocating a surface 320x240x16 DDraw:HEL: About to allocate 153600 bytes for the surface of 640x240 with alignemnt 8 DDraw:DD_Surface_AddRef, Reference Count: Global = 1 Local = 1 Int = 1 DDraw: CreateSurface returns 00000000 (0) DDraw:82dc1f74->Lock DDraw: DDSURFACEDESC->dwHeight = 240 DDraw: DDSURFACEDESC->dwWidth = 320 DDraw: DDSURFACEDESC->lPitch = 640 DDraw: DDSURFACEDESC->lpSurface = 004b7118 DDraw:Flags: DDraw: DDPF_RGB DDraw: BitCount:16 DDraw: Bitmasks: R/Y:00007c00, G/U:000003e0, B/V:0000001f, Alpha/Z:00000000 DDraw: DDSCAPS_OFFSCREENPLAIN DDraw: DDSCAPS_SYSTEMMEMORY DDraw:WM_SIZE hWnd=AAC wp=0000, lp=01E00280 DDraw:WM_SIZE: Window restored, sending WM_ACTIVATEAPP DDraw:WM_ACTIVATEAPP: BEGIN Activating app pid=fff00c89, tid=fff04bf1 DDraw:*** Already activated DDraw:WM_ACTIVATEAPP: DONE Activating app pid=fff00c89, tid=fff04bf1 DDraw:Bringing window to top DDraw:WM_ACTIVATEAPP: BEGIN Deactivating app pid=fff00c89, tid=fff04bf1 DDraw:*** Active state changing DDraw:******** invalidating all surfaces DDraw:INACTIVE: fff00c89: Restoring original mode (1) DDraw:In RestoreDisplayMode DDraw:Turning off DCI in mySetMode DDraw:WM_DISPLAYCHANGE: 800x600x8 DDraw:DD_GetDeviceRect: display [0 0 800 600] DDraw:WM_SIZE hWnd=AAC wp=0000, lp=02580320 DDraw:WM_SIZE: Window restored, NOT sending WM_ACTIVATEAPP DDraw:WM_ACTIVATEAPP: BEGIN Deactivating app pid=fff00c89, tid=fff04bf1 DDraw:*** Already deactivated DDraw:WM_ACTIVATEAPP: DONE Deactivating app pid=fff00c89, tid=fff04bf1 DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0x159a DDraw:DeleteDC 0xa4a DDraw:RestoreDisplayMode: Process fff00c89 Mode = 4 DDraw:createDC(display) DDraw:getDisplayMode: DDraw: bpp=8, refresh=0 DDraw: dwHeight=600, dwWidth=800 DDraw: lStride=0 DDraw:Driver says nummodes=9 DDraw:Enum Display Settings says nummodes=9 DDraw:dwModeIndex = 1 DDraw:Masks for current mode are: 00000000 00000000 00000000 DDraw:DirectDrawObjectCreate: oldpdd == 82dc11f8, reset=1 DDraw:DIRECTDRAW object passed in = 82dc11f8 DDraw:oldpdd == 82dc11f8, reset=1 DDraw:Driver Object: 2256 base bytes DDraw:dwReserved3 of DDrawGbl is set to 0x0 DDraw:oldpdd == NULL || reset DDraw:Driver can't blt DDraw:******** invalidating all surfaces DDraw:All video memory heaps have been disabled. OS has no AGP support DDraw:Current and Original Mode = 1 DDraw:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ MODE INDEX = 1 DDraw:DDHALInfo contains D3D pointers: 00000000 00000000 DDraw:createDC(display) DDraw:NOT Setting DDCAPS_BANKSWITCHED DDraw:DeleteDC 0x170a DDraw:Taking the Win16 lock may not be necessary for VRAM locks DDraw:DirectDrawObjectCreate: Returning global object 82dc11f8 DDraw:createDC(display) DDraw:createDC(display) DDraw:DeleteDC 0xaa2 DDraw:DeleteDC 0x170a DDraw:Primary's rect is 0, 0, 800, 600 DDraw:DeleteDC 0x13ba DDraw:Redrawing all windows DDraw:DoneExclusiveMode DDraw:Enabling error mode, hotkeys DDraw:Mode was never changed by this app DDraw:WM_ACTIVATEAPP: DONE Deactivating app pid=fff00c89, tid=fff04bf1 DDraw:DD_Surface_Release, Reference Count: Global = 0 Local = 0 Int = 0 DDraw:Deleting attachment from 82dc1e98 to 82dc1b84 (implicit = 1) DDraw:DeleteOneAttachment: 82dc1b84,82dc1e98 DDraw:DD_Surface_AddRef, Reference Count: Global = 3 Local = 3 Int = 3 DDraw:Leaving AddRef early to prevent recursion DDraw:DeleteOneLink: 82dc1e98,82dc1b84 DDraw:DeleteOneLink: 82dc1b84,82dc1e98 DDraw:DD_Surface_Release, Reference Count: Global = 2 Local = 2 Int = 2 DDraw:Leaving Release early to prevent recursion DDraw:DD_Surface_Release, Reference Count: Global = 1 Local = 1 Int = 1 DDraw:DD_Surface_Release, Reference Count: Global = 0 Local = 0 Int = 0 DDraw:Freeing pointer 0042110c DDraw:DD_Release, pid=fff00c89, obj=82dc1bb0 DDraw:DD_Release, Ref Count: Global = 0 Local = 0 Interface = 0 DDraw:Unsubclassing window 00000aac DDraw:ProcessSurfaceCleanup DDraw:Process fff00c89 had 1 accesses to surface 82dc1f74 DDraw:DD_Surface_Release, Reference Count: Global = 0 Local = 0 Int = 0 DDraw:Freeing pointer 004b7118 DDraw:Leaving ProcessSurfaceCleanup DDraw:ProcessPaletteCleanup, ppal=00000000 DDraw:ProcessClipperCleanup DDraw:Cleaning up clippers owned by driver object 0x82dc11f8 DDraw:Not cleaning up clippers not owned by a driver object DDraw:ProcessVideoPortCleanup DDraw:Leaving ProcessVideoPortCleanup DDraw:Mode was never changed by this app DDraw:FREEING DRIVER OBJECT DDraw:Calling HEL DestroyDriver DDraw:HEL DestroyDriver: dwHELRefCnt=0 DDraw:3 surfaces allocated - 768000 bytes total DDraw:*********** DDHEL TIMING INFO ************ DDraw:myFlip: 30 calls, 1.365 sec (0.045) DDraw:myLock: 1 calls, 0.000 sec (0.000) DDraw:myUnlock: 1 calls, 0.000 sec (0.000) DDraw:****************************************** DDraw:Frequency(cycles/second)(0) 1193180 DDraw:Blt16_SrcCopy(32): SUM = 264860 DDraw:Blt16_SrcCopy(32): COUNT = 30 DDraw:Blt16_SrcCopy(32): AVG = 8828 DDraw:Blt16_SrcCopy(32): MIN = 8572 DDraw:Blt16_SrcCopy(32): MAX = 9964 DDraw:Blt16_SrcCopy(32): Dst MB/sec = 17 DDraw:Blt16_ColorFill(47): SUM = 716435 DDraw:Blt16_ColorFill(47): COUNT = 32 DDraw:Blt16_ColorFill(47): AVG = 22388 DDraw:Blt16_ColorFill(47): MIN = 15855 DDraw:Blt16_ColorFill(47): MAX = 55858 DDraw:Blt16_ColorFill(47): Dst MB/sec = 27 DDraw:P6SrcCopy(Bypass Blt16_SrcCopy)(88): SUM = 263495 DDraw:P6SrcCopy(Bypass Blt16_SrcCopy)(88): COUNT = 30 DDraw:P6SrcCopy(Bypass Blt16_SrcCopy)(88): AVG = 8783 DDraw:P6SrcCopy(Bypass Blt16_SrcCopy)(88): MIN = 8528 DDraw:P6SrcCopy(Bypass Blt16_SrcCopy)(88): MAX = 9917 DDraw:P6SrcCopy(Bypass Blt16_SrcCopy)(88): Dst MB/sec = 17 DDraw:Driver is now FREE DDraw:====> ENTER: DLLMAIN(baaa12c0): Process Detach fff00c89, tid=fff04bf1 DDraw:MemState DDraw:Memory still allocated! Alloc count = 11 DDraw:Current Process (pid) = fff00c89 DDraw:82dc100c: dwSize=00000008, lpAddr=baaa1bbc (pid=fff1b349) DDraw:82dc1054: dwSize=0000001d, lpAddr=baae5093 (pid=fff18e61) DDraw:82dc1090: dwSize=00000019, lpAddr=baae5093 (pid=fff18e61) DDraw:82dc10c8: dwSize=00000019, lpAddr=baae5093 (pid=fff18e61) DDraw:82dc1100: dwSize=0000001d, lpAddr=baae5093 (pid=fff18e61) DDraw:82dc113c: dwSize=00000018, lpAddr=baae5093 (pid=fff18e61) DDraw:82dc1170: dwSize=00000019, lpAddr=baae5093 (pid=fff18e61) DDraw:82dc11a8: dwSize=0000001c, lpAddr=baae52c8 (pid=fff18e61) DDraw:82dc1030: dwSize=00000008, lpAddr=baaa1bbc (pid=fff04a0d) DDraw:82dc1fc0: dwSize=00000008, lpAddr=baaa1bbc (pid=fff04a0d) DDraw:82dc1c3c: dwSize=00000008, lpAddr=baaa1bbc (pid=fff00c89) DDraw:Total Memory Unfreed From Current Process = 8 bytes DDraw:====> EXIT: DLLMAIN(baaa12c0): Process Detach fff00c89 |