{"id":200,"date":"2010-04-18T00:29:10","date_gmt":"2010-04-18T09:29:10","guid":{"rendered":"\/blog\/?p=200"},"modified":"2023-09-21T09:39:11","modified_gmt":"2023-09-21T00:39:11","slug":"ddk-%ea%b0%80%ec%9e%a5-%ea%b0%84%eb%8b%a8%ed%95%9c-%ec%bb%a4%eb%84%90-%eb%93%9c%eb%9d%bc%ec%9d%b4%eb%b2%84-%ec%bd%94%eb%93%9c-%ec%9e%91%ec%84%b1","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=200","title":{"rendered":"[DDK] \uac00\uc7a5 \uac04\ub2e8\ud55c \ucee4\ub110 \ub4dc\ub77c\uc774\ubc84 \ucf54\ub4dc \uc791\uc131"},"content":{"rendered":"\n<div class=\"article_post\">\ub514\ubc14\uc774\uc2a4 \ub4dc\ub77c\uc774\ubc84\ub97c \uacf5\ubd80\ud558\uba74\uc11c \uac00\uc7a5 \uc5b4\ub824\uc6b4 \uac83\uc774 \uc788\ub2e4.<br \/><br \/>\"\uc65c \uc774\ub7f0 \uad6c\uc870\uc774\uc9c0? \uc65c \uae30\uc874\uc758 \n\ud504\ub85c\uadf8\ub7a8 \uad6c\uc870\ub791 \ub2e4\ub974\uc9c0?\"<br \/><br \/>\uc81c\uc57d\ub3c4 \ub9ce\uc774 \uc874\uc7ac\ud55c\ub2e4. BSOD\uc758 \uc555\ubc15,<br \/><br \/>\uae30\ubcf8\uc801\uc778 \ub4dc\ub77c\uc774\ubc84\ub97c \uc791\uc131\ud560\ub54c \uc870\uac74\uc774 \uba87\uac00\uc9c0 \n\uc788\ub2e4.<br \/><br \/>\uc77c\ub2e8\uc740 <font color=\"#ff0000\">DriverEntry()<\/font> \uac00 \uc874\uc7ac\ud574\uc57c\ud55c\ub2e4. \n<br \/><br \/>DriverEntry()\ub294 Main() \ud568\uc218\ub791 \uac19\ub2e4.<br \/><br \/>DriverEntry() \uc548\uc5d0\uc11c <font color=\"#ff0000\">Dispatch \ub8e8\ud2f4<\/font>\uc744 \uc791\uc131\ud574\uc57c\ud55c\ub2e4.<br \/><br \/>\uadf8\ub9ac\uace0 <font color=\"#ff0000\">Unload() \ub8e8\ud2f4<\/font>\ub3c4 \uc791\uc131\ud574\uc57c\ud55c\ub2e4. \ub4f1\ub85d\uc744 \ud588\uc73c\uba74 \ub9ac\uc18c\uc2a4\ub97c \ubc18\ub0a9\ud574\uc57c\ud55c\ub2e4.<br \/><br \/>\uadf8\ub9ac\uace0 <font color=\"#ff0000\">MAKEFILE<\/font>\uacfc <font color=\"#ff0000\">SOURCES<\/font> \ud30c\uc77c\uc774 \n\ud544\uc694\ud558\ub2e4.<br \/><br \/>\uc774\ub807\uac8c \uc54c\uc558\uc73c\uba74 \ucf54\ub4dc\ub97c \ubcf4\uc790.<br \/>\n<div class=\"dp-highlighter\">\n<div class=\"bar\">\n<div class=\"tools\">&nbsp;<\/div><\/div>\n<ol class=\"dp-cpp\"><li class=\"alt\"><span><span class=\"preprocessor\"><font color=\"#808080\">#include \"ntddk.h\" <\/font><\/span><span>&nbsp; <\/span><\/span> \n<\/li><li><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span class=\"preprocessor\"><font color=\"#808080\">#define FILE_DEVICE_HZ 0x9000 <\/font><\/span><span>&nbsp; <\/span> \n\n<\/li><li><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span class=\"datatypes\"><strong><font color=\"#2e8b57\">VOID<\/font><\/strong><\/span><span>&nbsp;HzUnload( IN PDRIVER_OBJECT ); \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span class=\"keyword\"><strong><font color=\"#006699\">typedef<\/font><\/strong><\/span><span>&nbsp;<\/span><span class=\"keyword\"><strong><font color=\"#006699\">struct<\/font><\/strong><\/span><span>&nbsp;_DEVICE_EXTENSION \n &nbsp;<\/span> \n<\/li><li><span>{ &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; <\/span><span class=\"datatypes\"><strong><font color=\"#2e8b57\">ULONG<\/font><\/strong><\/span><span>&nbsp;Ordinal; &nbsp; <\/span> \n<\/li><li><span>} DEVICE_EXTENSION, *PDEVICE_EXTENSION; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; <\/span> \n<\/li><li><span>NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegPath ) \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>{ &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; <\/span><span class=\"comment\"><font color=\"#008200\">\/\/ \ub4dc\ub77c\uc774\ubc84 \ub85c\ub4dc\ub41c \uac83\uc744 DebugView\uc5d0 \ubfcc\ub824\uc900\ub2e4. \n<\/font><\/span><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; DbgPrint(<\/span><span class=\"string\"><font color=\"#0000ff\">\"HzDevice is Loaded\\n\"<\/font><\/span><span>); &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;&nbsp; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; <\/span><span class=\"comment\"><font color=\"#008200\">\/\/ Dispatch Table\uc744 \uc791\uc131\ud55c\ub2e4. <\/font><\/span><span>&nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; DriverObject-&gt;DriverUnload = HzUnload; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; <\/span><span class=\"keyword\"><strong><font color=\"#006699\">return<\/font><\/strong><\/span><span>&nbsp;STATUS_SUCCESS; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>} &nbsp; <\/span> \n<\/li><li><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span class=\"datatypes\"><strong><font color=\"#2e8b57\">VOID<\/font><\/strong><\/span><span>&nbsp;HzUnload( IN PDRIVER_OBJECT DriverObject ) \n &nbsp;<\/span> \n<\/li><li><span>{ &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; DbgPrint(<\/span><span class=\"string\"><font color=\"#0000ff\">\" Hz Driver UnLoaded \\n\"<\/font><\/span><span>); &nbsp; <\/span> \n<\/li><li><span>} &nbsp;<\/span><\/li><\/ol><\/div>&lt;TEXTAREA class=\"cpp\" style=\"DISPLAY: \nnone\" name=code rows=10 cols=60&gt;#include \"ntddk.h\" #define FILE_DEVICE_HZ \n0x9000 VOID HzUnload( IN PDRIVER_OBJECT ); typedef struct _DEVICE_EXTENSION { \nULONG Ordinal; } DEVICE_EXTENSION, *PDEVICE_EXTENSION; NTSTATUS DriverEntry( IN \nPDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegPath ) { \/\/ \ub4dc\ub77c\uc774\ubc84 \ub85c\ub4dc\ub41c \uac83\uc744 \nDebugView\uc5d0 \ubfcc\ub824\uc900\ub2e4. DbgPrint(\"HzDevice is Loaded\\n\"); \/\/ Dispatch Table\uc744 \uc791\uc131\ud55c\ub2e4. \nDriverObject-&gt;DriverUnload = HzUnload; return STATUS_SUCCESS; } VOID \nHzUnload( IN PDRIVER_OBJECT DriverObject ) { DbgPrint(\" Hz Driver UnLoaded \\n\"); \n} &lt;\/TEXTAREA&gt; <br \/><br \/>Driver Loader\ub780 \ud504\ub85c\uadf8\ub7a8\uc744 \ub2e4\uc6b4\ub85c\ub4dc \ud574\uc11c \ub4f1\ub85d\uc744 \n\uc2dc\ucf1c\ubcf4\uc790.<br \/><br \/>DriverLoader\ub97c \ubabb\uad6c\ud558\uaca0\ub2e4\uba74 SCM\uc744 \uc774\uc6a9\ud574\uc11c \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud558\uba74\ub41c\ub2e4.<br \/><br \/>\ub098\uc911\uc5d0 \uc2dc\uac04\ub098\uba74 \ucf54\ub4dc\ub97c \n\uc62c\ub824\uc57c\uaca0\ub2e4.<br \/><br \/>\uc774\ub807\uac8c \ud574\uc11c DebugView\ub85c \ucd9c\ub825\uc744 \ubcf4\uace0 \uc788\uc73c\uba74 <br \/><br \/>Load, Unload \uae00\uc790\uac00 \ub728\ub294\uac83\uc744 \ud655\uc778\ud560 \uc218 \n\uc788\uc744\uac83\uc774\ub2e4.<br \/><br \/>\ub2e4\uc74c\uc5d0\ub294 Driver\uc758 Dispatch \ub8e8\ud2f4\uacfc Unload \ub8e8\ud2f4\uc744 \uc880\ub354 \ubcf4\uac15\uc2dc\ucf1c\ubcf4\uc790. <\/div>\n<div class=\"article_post\">&nbsp;<\/div>\n<div class=\"article_post\">\ucd9c\ucc98 : <a class=\"con_link\" href=\"http:\/\/ssmhz.tistory.com\/\" target=\"_blank\" rel=\"noopener\">http:\/\/ssmhz.tistory.com\n<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ub514\ubc14\uc774\uc2a4 \ub4dc\ub77c\uc774\ubc84\ub97c \uacf5\ubd80\ud558\uba74\uc11c \uac00\uc7a5 \uc5b4\ub824\uc6b4 \uac83\uc774 \uc788\ub2e4. &#8220;\uc65c \uc774\ub7f0 \uad6c\uc870\uc774\uc9c0? \uc65c \uae30\uc874\uc758 \ud504\ub85c\uadf8\ub7a8 \uad6c\uc870\ub791 \ub2e4\ub974\uc9c0?&#8221; \uc81c\uc57d\ub3c4 \ub9ce\uc774 \uc874\uc7ac\ud55c\ub2e4. BSOD\uc758 \uc555\ubc15, \uae30\ubcf8\uc801\uc778 \ub4dc\ub77c\uc774\ubc84\ub97c \uc791\uc131\ud560\ub54c \uc870\uac74\uc774 \uba87\uac00\uc9c0 \uc788\ub2e4. \uc77c\ub2e8\uc740 DriverEntry() \uac00 \uc874\uc7ac\ud574\uc57c\ud55c\ub2e4. DriverEntry()\ub294 Main() \ud568\uc218\ub791 \uac19\ub2e4. DriverEntry() \uc548\uc5d0\uc11c Dispatch \ub8e8\ud2f4\uc744 \uc791\uc131\ud574\uc57c\ud55c\ub2e4. \uadf8\ub9ac\uace0 Unload() \ub8e8\ud2f4\ub3c4 \uc791\uc131\ud574\uc57c\ud55c\ub2e4. \ub4f1\ub85d\uc744 \ud588\uc73c\uba74 \ub9ac\uc18c\uc2a4\ub97c \ubc18\ub0a9\ud574\uc57c\ud55c\ub2e4. \uadf8\ub9ac\uace0 MAKEFILE\uacfc SOURCES \ud30c\uc77c\uc774 \ud544\uc694\ud558\ub2e4. \uc774\ub807\uac8c \uc54c\uc558\uc73c\uba74 \ucf54\ub4dc\ub97c [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[24],"tags":[],"class_list":["post-200","post","type-post","status-publish","format-standard","hentry","category-development_winddk"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=200"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/200\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}