{"id":194,"date":"2010-04-18T00:26:03","date_gmt":"2010-04-18T09:26:03","guid":{"rendered":"\/blog\/?p=194"},"modified":"2023-09-21T09:39:12","modified_gmt":"2023-09-21T00:39:12","slug":"ddk-apc%ea%b0%80-%eb%8c%80%ec%b2%b4-%eb%ad%98%ea%b9%8c","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=194","title":{"rendered":"[DDK] APC\uac00 \ub300\uccb4 \ubb58\uae4c?!?"},"content":{"rendered":"\n\ub9ac\uc18c\uc2a4 \uc624\ube0c\uc81d\ud2b8 \uacf5\ubd80\ub97c \ud558\ub2e4 \ubcf4\uba74, APC\ub780\uac8c \ub9ce\uc774 \ub098\uc628\ub2e4.<br \/><br \/>\uc77c\ub2e8 APC_LEVEL\uc774\ub77c\uace0, PASSIVE_LEVEL\uacfc \nDISPATCH_LEVEL \uc0ac\uc774\uc5d0 \uc874\uc7ac\ud558\ub294<br \/><br \/>\uc0c1\uc218\uac12 2\uc758 APC\uac00 \uc874\uc7ac\ud55c\ub2e4.<br \/><br \/>&nbsp;\uadf8\ub807\ub2e4\uba74 APC\ub780\uac8c \uc815\ud655\ud558\uac8c \ubb34\uc5c7\uc778\uc9c0 \n\uc54c\uc544\ubcf4\uc790!!@!<br \/><br \/><br \/><strong><font size=\"3\">APC( Asynchronous Procedure Call \n)<br \/><\/font><\/strong><br \/><br \/>&nbsp;APC\ub294 \uc2a4\ub808\ub4dc\ub97c \uc704\ud55c \uc81c\uc5b4 \ud750\ub984\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce60 \uc218 \uc788\ub294 \ubc29\ubc95\uc73c\ub85c, \ud2b9\uc815 \uc2a4\ub808\ub4dc\ub97c \ubaa9\ud45c\ub85c \n\ud574\uc57c\ud55c\ub2e4.<br \/><br \/>\ubaa8\ub4e0 \ub514\ubc14\uc774\uc2a4 \ucee8\ud14d\uc2a4\ud2b8\ub294 \uc2e4\ud589\uc774 \ub420\ub54c \uc5b4\ub290 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\uc774 \ub420\uc9c0 \ubaa8\ub978\ub2e4, \uc2a4\ub808\ub4dc\uac00 \uc0dd\uc131\ud558\uace0<br \/><br \/>\uadf8 \ub514\ubc14\uc774\uc2a4\ub97c \n\uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0, \uc784\uc758\uc758 \uc2a4\ub808\ub4dc( Arbitrary Thread )\uc5d0\uc11c \uc2e4\ud589\uc774 \ub41c\ub2e4.<br \/><br \/>&nbsp;\ud558\uc9c0\ub9cc APC\ub294 \uc77c\ubc18\uc801\uc73c\ub85c \ud504\ub85c\uc138\uc11c\uc5d0\uc11c \n\uc2e4\ud589\ub418\ub294 \uc784\uc758\uc758 \uc2a4\ub808\ub4dc \ucee8\ud14d\uc2a4\ud2b8\uc5d0\uc11c \uc2e4\ud589\ub418\ub294 DPC\uc640 \ubc18\ub300\ub418\ub294<br \/><br \/>\uac1c\ub150\uc774\ub2e4.<br \/><br \/>&nbsp;APC\uc5d0 \uc9c1\uc811 \uba85\ub839\uc744 \uc804\ub2ec\ud558\ub294 \uc2a4\ub808\ub4dc\uac00 \n\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc778\ud130\ub7fd\ud2b8\ub97c \ud1b5\ud574 \ucc28\ub2e8\ub418\uba74 APC_LEVEL IRQL\uc5d0\uc11c <br \/><br \/>\ucc28\ub2e8\ub41c \uc2a4\ub808\ub4dc \ucee8\ud14d\uc2a4\ud2b8\uac00 \ud65c\uc131\ud654\ub418\uc5b4 \n\uc2e4\ud589\ub41c\ub2e4.<br \/><br \/>&nbsp;APC\ub294 \ucee4\ub110 \ubaa8\ub4dc\ub098 \uc720\uc800 \ubaa8\ub4dc\uc5d0\uc11c \uc804\ub2ec\ub420 \uc218 \uc788\uace0, \ucee4\ub110 \ubaa8\ub4dc\ub294 \uc77c\ubc18\uc801\uc778 \ud615\ud0dc\uc758 APC\uc640 \ud2b9\ubcc4\ud55c \n\ud615\ud0dc\uc758<br \/><br \/>APC\ub85c \ub098\ub20c \uc218 \uc788\ub2e4. \uc77c\ubc18\uc801\uc778 \ud615\ud0dc\uc758 APC\ub294 \ucee4\ub110 \ubaa8\ub4dc \ub4dc\ub77c\uc774\ubc84\uc5d0\uc11c KeEnterCriticalRegion() \ud568\uc218\ub97c \n<br \/><br \/>\ud638\ucd9c\ud574\uc11c \uc2e4\ud589\uc774 \ub418\uc9c0 \ubabb\ud558\ub3c4\ub85d \uc870\uc808\ud560 \uc218 \uc788\uc9c0\ub9cc, \ud2b9\ubcc4\ud55c \ud615\uc2dd\uc758 APC\ub294 \ucc28\ub2e8\ud558\uc9c0 \ubabb\ud55c\ub2e4.<br \/><br \/>&nbsp;\ub9ac\uc18c\uc2a4 \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e4\ub8e8\ub2e4 \n\ubcf4\uba74 APC\uc5d0 \uad00\ud55c \uc815\ubcf4\uac00 \ub098\uc628\ub2e4. \uc774\ub54c APC\ub97c \ubcf4\uac8c \ub418\uba74, \ub9ac\uc18c\uc2a4 \uc624\ube0c\uc81d\ud2b8\uc640<br \/><br \/>\uad00\ub828\ub41c \ud568\uc218\ub4e4\uc740 DISPATCH_LEVEL \uc774\ub098 \n\uc774\ubcf4\ub2e4 \ub0ae\uc740 IRQL\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud574\uc57c \ud55c\ub2e4.<br \/><br \/>&nbsp;\ub9ac\uc18c\uc2a4 \uc624\ube0c\uc81d\ud2b8\ub294 \ub9ac\uc18c\uc2a4\ub97c \ud68d\ub4dd\ud588\ub2e4 \ud558\ub354\ub77c\ub3c4, \uc77c\ubc18\uc801\uc778 \ud615\ud0dc\uc758 APC\ub294 \uc2e4\ud589\ub420 \uc218 \n\uc788\uae30\ub54c\ubb38\uc5d0, \uc774\ub97c<br \/><br \/>\ucc28\ub2e8\ud558\uae30 \uc704\ud574 KeEnterCriticalRegion() \ud568\uc218\ub97c \ud638\ucd9c\ud558\uace0, \uc624\ube0c\uc81d\ud2b8 \uc0ac\uc6a9 \uc644\ub8cc \uc2dc \ub2e4\uc2dc \nKeLeaveCriticalRegion()<br \/><br \/>\ud568\uc218\ub97c \ud638\ucd9c\ud558\uc5ec APC\uac00 \ub3d9\uc791\ud558\ub3c4\ub85d \ucc98\ub9ac\ud55c\ub2e4. Windows 2000\uc740 \uc2a4\ub808\ub4dc \uc218\ud589\uc744 \n\ub3d9\uae30\ud654\ud558\uac70\ub098 \uacf5\uc720\ud558\ub294 \uac1d\uccb4<br \/><br \/>\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4\ub97c \ubcf4\ud638\ud558\uae30 \uc704\ud574 Fast Mutex\uc640 \uc778\ud130\ub77d\uc744 \uc81c\uacf5\ud55c\ub2e4.<br \/><br \/>&nbsp;Filemon\uc5d0\uc11c \n\uc608\uc81c\ucf54\ub4dc\ub97c \ubcf4\uba74 \ub9ac\uc18c\uc2a4 \uc624\ube0c\uc81d\ud2b8\ub97c \uc0ac\uc6a9\ud560\ub54c \ucee4\ub110 APC\uc5d0 \uc804\ub2ec\ud558\ub294 \ucf54\ub4dc\uac00 \uc788\ub2e4.<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=\"datatypes\"><strong><font color=\"#2e8b57\">VOID<\/font><\/strong><\/span><span>&nbsp;FilemonUpdateFilters( <\/span><span class=\"datatypes\"><strong><font color=\"#2e8b57\">VOID<\/font><\/strong><\/span><span>&nbsp;) \n &nbsp;<\/span><\/span> \n<\/li><li><span>{ &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; KeEnterCriticalRegion(); &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; ExAcquireResourceExclusiveLite( &amp;FilterResource, TRUE ); \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;&nbsp; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; ... &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; ExReleaseResourceLite( &amp;FilterResource ); &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; KeLeaveCriticalRegion(); &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;VOID FilemonUpdateFilters( VOID ) { \nKeEnterCriticalRegion(); ExAcquireResourceExclusiveLite( &amp;FilterResource, \nTRUE ); ... ExReleaseResourceLite( &amp;FilterResource ); \nKeLeaveCriticalRegion(); } &lt;\/TEXTAREA&gt; <br \/><br \/>\uc624\ube0c\uc81d\ud2b8\uc5d0 \uad00\ud55c \uc6a9\uc5b4\uac00 \ub098\uc654\ub294\ub370 \ub2e4\uc74c\uc5d0 \ub3d9\uae30\ud654\ub97c \n\uc54c\uc544\ubcfc\ub54c \uac01\uc885 \uc624\ube0c\uc81d\ud2b8\ub4e4\uc744 \uc54c\uc544\ubcf4\uc790,<br \/>\n","protected":false},"excerpt":{"rendered":"<p>\ub9ac\uc18c\uc2a4 \uc624\ube0c\uc81d\ud2b8 \uacf5\ubd80\ub97c \ud558\ub2e4 \ubcf4\uba74, APC\ub780\uac8c \ub9ce\uc774 \ub098\uc628\ub2e4. \uc77c\ub2e8 APC_LEVEL\uc774\ub77c\uace0, PASSIVE_LEVEL\uacfc DISPATCH_LEVEL \uc0ac\uc774\uc5d0 \uc874\uc7ac\ud558\ub294 \uc0c1\uc218\uac12 2\uc758 APC\uac00 \uc874\uc7ac\ud55c\ub2e4. &nbsp;\uadf8\ub807\ub2e4\uba74 APC\ub780\uac8c \uc815\ud655\ud558\uac8c \ubb34\uc5c7\uc778\uc9c0 \uc54c\uc544\ubcf4\uc790!!@! APC( Asynchronous Procedure Call ) &nbsp;APC\ub294 \uc2a4\ub808\ub4dc\ub97c \uc704\ud55c \uc81c\uc5b4 \ud750\ub984\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce60 \uc218 \uc788\ub294 \ubc29\ubc95\uc73c\ub85c, \ud2b9\uc815 \uc2a4\ub808\ub4dc\ub97c \ubaa9\ud45c\ub85c \ud574\uc57c\ud55c\ub2e4. \ubaa8\ub4e0 \ub514\ubc14\uc774\uc2a4 \ucee8\ud14d\uc2a4\ud2b8\ub294 \uc2e4\ud589\uc774 \ub420\ub54c \uc5b4\ub290 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\uc774 \ub420\uc9c0 \ubaa8\ub978\ub2e4, \uc2a4\ub808\ub4dc\uac00 \uc0dd\uc131\ud558\uace0 \uadf8 [&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-194","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\/194","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=194"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/194\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}