{"id":187,"date":"2010-04-18T00:20:53","date_gmt":"2010-04-18T09:20:53","guid":{"rendered":"\/blog\/?p=187"},"modified":"2023-09-21T09:39:12","modified_gmt":"2023-09-21T00:39:12","slug":"ddk-%ed%8c%8c%ec%9d%bc-%ec%8b%9c%ec%8a%a4%ed%85%9c-%eb%93%9c%eb%9d%bc%ec%9d%b4%eb%b2%84%ec%9d%98-fastiodispatch-%eb%a3%a8%ed%8b%b4","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=187","title":{"rendered":"[DDK] \ud30c\uc77c \uc2dc\uc2a4\ud15c \ub4dc\ub77c\uc774\ubc84\uc758 FastIoDispatch \ub8e8\ud2f4"},"content":{"rendered":"\n<div class=\"article_post\">Filemon\uacfc SFilter\ub97c \uc608\ub85c \ub4e4\uc5b4\uc11c \uc124\uba85\ud558\uc790,<br \/><br \/>\uc77c\ub2e8 Filemon\uc740 \ub3d9\uc801 \ud544\ud130 \n\ub4dc\ub77c\uc774\ubc84\uc774\ub2e4.<br \/><br \/>SFilter\uc640\ub294 \ub2e4\ub974\uac8c \uc7ac\ubd80\ud305\uc744 \uc694\ud558\ub294 \ub9cc\ud07c\uc758 \uc791\uc5c5\uc740 \ud544\uc694\uac00 \uc5c6\ub2e4.<br \/><br \/>\ub2e8\uc9c0 \ud30c\uc77c\uc758 \uc785\ucd9c\ub825\uc744 \n\uac10\uc2dc\ud560\ubfd0,<br \/><br \/>\uc774\uc815\ub3c4\uc758 \uae30\ub2a5\uc774\ub77c\uba74 SDT \ud6c4\ud0b9\uc744 \ud574\uc11c \uad6c\ud604\ud560 \uc218\ub3c4 \uc788\uc744 \uac83 \uac19\ub2e4,<br \/><br \/>\ud558\uc9c0\ub9cc \ub0b4\ubd80\uc801\uc73c\ub85c \uc5c4\uccad\ub098\uac8c \uc798\uc9dc\ub1a8\uaca0\uc9c0, \n- _-;<br \/><br \/>\uc77c\ub2e8 DriverEntry()\ub97c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ub8e8\ud2f4\uc774 \uc874\uc7ac\ud55c\ub2e4.<br \/><br \/>\ud30c\uc77c \uc2dc\uc2a4\ud15c \ud544\ud130 \ub4dc\ub77c\uc774\ubc84\ub97c \n\uc791\uc131\ud558\ub2e4\ubcf4\uba74,<br \/><br \/>Fast I\/O\uc5d0 \ub300\ud574\uc11c \ub9ce\uc774 \ubcf4\uac8c \ub41c\ub2e4,<br \/><br \/>\uc65c\ub0d0\ud558\uba74 \ud30c\uc77c \uc2dc\uc2a4\ud15c \ub4dc\ub77c\uc774\ubc84\ub294 I\/O Manager\uac00 \n\uc0dd\uc131\ud55c<br \/><br \/>IRP\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ub97c \uc8fc\uace0 \ubc1b\ub294 \uac83 \uc774\uc678\uc5d0 Fast I\/O \ub514\uc2a4\ud328\uce58 \ub8e8\ud2f4\uc744 \ud1b5\ud558\uc5ec <br \/><br \/>Cache \nManager\uc640 \uc9c1\uc811 \ub370\uc774\ud130\ub97c \uc8fc\uace0 \ubc1b\ub294\ub2e4.<br \/><br \/>\ub530\ub77c\uc11c \ud30c\uc77c \uc2dc\uc2a4\ud15c \ud544\ud130 \ub4dc\ub77c\uc774\ubc84 \uc5ed\uc2dc<span style=\"width: 226px; float: left; height: 196px;\" id=\"callbacknestssmhztistorycom1478876\">\n<object id=\"ssmhztistorycom1478876\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" height=\"100%\" width=\"100%\"><param name=\"_cx\" value=\"5953\"><param name=\"_cy\" value=\"5186\"><param name=\"FlashVars\" value=\"\"><param name=\"Movie\" value=\"http:\/\/cfs.tistory.com\/blog\/plugins\/CallBack\/callback.swf?destDocId=callbacknestssmhztistorycom1478876&amp;id=147&amp;callbackId=ssmhztistorycom1478876&amp;host=http:\/\/ssmhz.tistory.com&amp;float=left&amp;\"><param name=\"Src\" value=\"http:\/\/cfs.tistory.com\/blog\/plugins\/CallBack\/callback.swf?destDocId=callbacknestssmhztistorycom1478876&amp;id=147&amp;callbackId=ssmhztistorycom1478876&amp;host=http:\/\/ssmhz.tistory.com&amp;float=left&amp;\"><param name=\"WMode\" value=\"Transparent\"><param name=\"Play\" value=\"0\"><param name=\"Loop\" value=\"-1\"><param name=\"Quality\" value=\"High\"><param name=\"SAlign\" value=\"LT\"><param name=\"Menu\" value=\"0\"><param name=\"Base\" value=\"\"><param name=\"AllowScriptAccess\" value=\"never\"><param name=\"Scale\" value=\"NoScale\"><param name=\"DeviceFont\" value=\"0\"><param name=\"EmbedMovie\" value=\"0\"><param name=\"BGColor\" value=\"\"><param name=\"SWRemote\" value=\"\"><param name=\"MovieData\" value=\"\"><param name=\"SeamlessTabbing\" value=\"1\"><param name=\"Profile\" value=\"0\"><param name=\"ProfileAddress\" value=\"\"><param name=\"ProfilePort\" value=\"0\"><param name=\"AllowNetworking\" value=\"internal\"><param name=\"AllowFullScreen\" value=\"false\">\n    <embed autostart=\"false\" invokeurls=\"false\" allowscriptaccess=\"never\" allownetworking=\"internal\" wmode=\"transparent\" id=\"ssmhztistorycom1478876\" src=\"http:\/\/cfs.tistory.com\/blog\/plugins\/CallBack\/callback.swf?destDocId=callbacknestssmhztistorycom1478876&amp;id=147&amp;callbackId=ssmhztistorycom1478876&amp;host=http:\/\/ssmhz.tistory.com&amp;float=left&amp;\" menu=\"false\" type=\"application\/x-shockwave-flash\" height=\"100%\" width=\"100%\"><\/object><\/span>Cache \nManager\uc640 \uc9c1\uc811 \ud1b5\uc2e0\ud558\uae30 \uc704\ud574\uc11c\ub294<br \/><br \/>Fast I\/O Dispatch Routine\uc744 \ub4f1\ub85d\ud558\uc5ec\uc57c \ud55c\ub2e4.<br \/><br \/><br \/>\n<div class=\"dp-highlighter\">\n<div class=\"bar\">\n<div class=\"tools\"><a class=\"con_link\" href=\"http:\/\/ssmhz.tistory.com\/147#\" target=\"_blank\" rel=\"noopener\"><font color=\"#a0a0a0\">view plain<\/font><\/a><a class=\"con_link\" href=\"http:\/\/ssmhz.tistory.com\/147#\" target=\"_blank\" rel=\"noopener\"><font color=\"#a0a0a0\">copy to clipboard<\/font><\/a><a class=\"con_link\" href=\"http:\/\/ssmhz.tistory.com\/147#\" target=\"_blank\" rel=\"noopener\"><font color=\"#a0a0a0\">print<\/font><\/a><a class=\"con_link\" href=\"http:\/\/ssmhz.tistory.com\/147#\" target=\"_blank\" rel=\"noopener\"><font color=\"#a0a0a0\">?<\/font><\/a><\/div><\/div>\n<ol class=\"dp-cpp\"><li class=\"alt\"><span><span>&nbsp; &nbsp;fastIoDispatch =&nbsp;ExAllocatePoolWithTag( NonPagedPool, <\/span><span class=\"keyword\"><strong><font color=\"#006699\">sizeof<\/font><\/strong><\/span><span>( FAST_IO_DISPATCH ), AMLT_POOL_TAG ); \n &nbsp;<\/span><\/span> \n<\/li><li><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span class=\"comment\"><font color=\"#008200\">\/\/ Non- pageable Pool \ud560\ub2f9\uc774 \uc2e4\ud328\ud558\uba74 \n<\/font><\/span><span>&nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;<\/span><span class=\"keyword\"><strong><font color=\"#006699\">if<\/font><\/strong><\/span><span>&nbsp;( NULL == fastIoDispatch )&nbsp; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>{ &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; <\/span><span class=\"comment\"><font color=\"#008200\">\/\/ \ub514\ubc14\uc774\uc2a4\ub97c \uc9c0\uc6b0\uace0 \uc790\uc6d0 \ubd80\uc871\uc774\ub77c\ub294 \ubc18\ud658\uac12\uc73c\ub85c \ub9ac\ud134\ud55c\ub2e4 \n<\/font><\/span><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp;IoDeleteDevice( g_AuthMonControlDeviceObject ); \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp; &nbsp; &nbsp;<\/span><span class=\"keyword\"><strong><font color=\"#006699\">return<\/font><\/strong><\/span><span>&nbsp;STATUS_INSUFFICIENT_RESOURCES; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;} &nbsp; <\/span> \n<\/li><li><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span class=\"comment\"><font color=\"#008200\">\/\/ \uba54\ubaa8\ub9ac \ucd08\uae30\ud654 Zero-Memory \ub8e8\ud2f4 <\/font><\/span><span>&nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;RtlZeroMemory( fastIoDispatch, <\/span><span class=\"keyword\"><strong><font color=\"#006699\">sizeof<\/font><\/strong><\/span><span>( FAST_IO_DISPATCH )&nbsp;); \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; <\/span> \n<\/li><li><span class=\"comment\"><font color=\"#008200\">\/\/ Fast I\/O \uc790\ub8cc \uad6c\uc870\uc758 \ub8e8\ud2f4\uacfc \uac12\ub4e4\uc744 \ucc44\uc6cc\ub123\ub294\ub2e4. \n<\/font><\/span><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span>fastIoDispatch-&gt;SizeOfFastIoDispatch =&nbsp;<\/span><span class=\"keyword\"><strong><font color=\"#006699\">sizeof<\/font><\/strong><\/span><span>( FAST_IO_DISPATCH ); \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoCheckIfPossible =&nbsp;AmFastIoCheckIfPossible; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoRead =&nbsp;AmFastIoRead; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoWrite =&nbsp;AmFastIoWrite; &nbsp; <\/span> \n\n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoQueryBasicInfo =&nbsp;AmFastIoQueryBasicInfo; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoQueryStandardInfo =&nbsp;AmFastIoQueryStandardInfo; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoLock =&nbsp;AmFastIoLock; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoUnlockSingle =&nbsp;AmFastIoUnlockSingle; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoUnlockAll =&nbsp;AmFastIoUnlockAll; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoUnlockAllByKey =&nbsp;AmFastIoUnlockAllByKey; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoDeviceControl =&nbsp;AmFastIoDeviceControl; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoDetachDevice =&nbsp;AmFastIoDetachDevice; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoQueryNetworkOpenInfo =&nbsp;AmFastIoQueryNetworkOpenInfo; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;MdlRead =&nbsp;AmFastIoMdlRead; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;MdlReadComplete =&nbsp;AmFastIoMdlReadComplete; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;PrepareMdlWrite =&nbsp;AmFastIoPrepareMdlWrite; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;MdlWriteComplete =&nbsp;AmFastIoMdlWriteComplete; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoReadCompressed =&nbsp;AmFastIoReadCompressed; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoWriteCompressed =&nbsp;AmFastIoWriteCompressed; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;MdlReadCompleteCompressed =&nbsp;AmFastIoMdlReadCompleteCompressed; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;fastIoDispatch-&gt;MdlWriteCompleteCompressed =&nbsp;AmFastIoMdlWriteCompleteCompressed; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;fastIoDispatch-&gt;FastIoQueryOpen =&nbsp;AmFastIoQueryOpen; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; <\/span> \n<\/li><li><span class=\"comment\"><font color=\"#008200\">\/\/ \ub4dc\ub77c\uc774\ubc84 \uc624\ube0c\uc81d\ud2b8\uc5d0 FastIoDispatch \ud568\uc218\uc758 \uc8fc\uc18c\uc5d0 \uc6b0\ub9ac\uac00 \uc815\uc758\ud55c \ud568\uc218\uc758 \uc8fc\uc18c\ub97c \ub123\ub294\ub2e4. \n<\/font><\/span><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;DriverObject-&gt;FastIoDispatch =&nbsp;fastIoDispatch; &nbsp;<\/span><\/li><\/ol><\/div>&lt;TEXTAREA \nclass=\"cpp\" style=\"DISPLAY: none\" name=code rows=10 cols=60&gt; fastIoDispatch = \nExAllocatePoolWithTag( NonPagedPool, sizeof( FAST_IO_DISPATCH ), AMLT_POOL_TAG \n); \/\/ Non- pageable Pool \ud560\ub2f9\uc774 \uc2e4\ud328\ud558\uba74 if ( NULL == fastIoDispatch ) { \/\/ \ub514\ubc14\uc774\uc2a4\ub97c \uc9c0\uc6b0\uace0 \n\uc790\uc6d0 \ubd80\uc871\uc774\ub77c\ub294 \ubc18\ud658\uac12\uc73c\ub85c \ub9ac\ud134\ud55c\ub2e4 IoDeleteDevice( g_AuthMonControlDeviceObject ); return \nSTATUS_INSUFFICIENT_RESOURCES; } \/\/ \uba54\ubaa8\ub9ac \ucd08\uae30\ud654 Zero-Memory \ub8e8\ud2f4 RtlZeroMemory( \nfastIoDispatch, sizeof( FAST_IO_DISPATCH ) ); \/\/ Fast I\/O \uc790\ub8cc \uad6c\uc870\uc758 \ub8e8\ud2f4\uacfc \uac12\ub4e4\uc744 \ucc44\uc6cc\ub123\ub294\ub2e4. \nfastIoDispatch-&gt;SizeOfFastIoDispatch = sizeof( FAST_IO_DISPATCH ); \nfastIoDispatch-&gt;FastIoCheckIfPossible = AmFastIoCheckIfPossible; \nfastIoDispatch-&gt;FastIoRead = AmFastIoRead; fastIoDispatch-&gt;FastIoWrite = \nAmFastIoWrite; fastIoDispatch-&gt;FastIoQueryBasicInfo = AmFastIoQueryBasicInfo; \nfastIoDispatch-&gt;FastIoQueryStandardInfo = AmFastIoQueryStandardInfo; \nfastIoDispatch-&gt;FastIoLock = AmFastIoLock; \nfastIoDispatch-&gt;FastIoUnlockSingle = AmFastIoUnlockSingle; \nfastIoDispatch-&gt;FastIoUnlockAll = AmFastIoUnlockAll; \nfastIoDispatch-&gt;FastIoUnlockAllByKey = AmFastIoUnlockAllByKey; \nfastIoDispatch-&gt;FastIoDeviceControl = AmFastIoDeviceControl; \nfastIoDispatch-&gt;FastIoDetachDevice = AmFastIoDetachDevice; \nfastIoDispatch-&gt;FastIoQueryNetworkOpenInfo = AmFastIoQueryNetworkOpenInfo; \nfastIoDispatch-&gt;MdlRead = AmFastIoMdlRead; fastIoDispatch-&gt;MdlReadComplete \n= AmFastIoMdlReadComplete; fastIoDispatch-&gt;PrepareMdlWrite = \nAmFastIoPrepareMdlWrite; fastIoDispatch-&gt;MdlWriteComplete = \nAmFastIoMdlWriteComplete; fastIoDispatch-&gt;FastIoReadCompressed = \nAmFastIoReadCompressed; fastIoDispatch-&gt;FastIoWriteCompressed = \nAmFastIoWriteCompressed; fastIoDispatch-&gt;MdlReadCompleteCompressed = \nAmFastIoMdlReadCompleteCompressed; fastIoDispatch-&gt;MdlWriteCompleteCompressed \n= AmFastIoMdlWriteCompleteCompressed; fastIoDispatch-&gt;FastIoQueryOpen = \nAmFastIoQueryOpen; \/\/ \ub4dc\ub77c\uc774\ubc84 \uc624\ube0c\uc81d\ud2b8\uc5d0 FastIoDispatch \ud568\uc218\uc758 \uc8fc\uc18c\uc5d0 \uc6b0\ub9ac\uac00 \uc815\uc758\ud55c \ud568\uc218\uc758 \uc8fc\uc18c\ub97c \ub123\ub294\ub2e4. \nDriverObject-&gt;FastIoDispatch = fastIoDispatch; &lt;\/TEXTAREA&gt; <br \/><br \/>\uc65c \n\uc774\ub807\uac8c \ud558\ub294 \uac83\uc77c\uae4c,<br \/><br \/>\uc77c\ub2e8 \ud30c\uc77c \uc2dc\uc2a4\ud15c \ub4dc\ub77c\uc774\ubc84\ub294 Cache Manager\uac00 \uc874\uc7ac\ud55c\ub2e4.<br \/><br \/>Cache Manager\uc5d0 \n\ub300\ud574\uc11c\ub294 \ub2e4\uc74c\uc5d0 \ud655\uc2e4\ud558\uac8c \uc815\ub9ac\ud574\uc11c \uc54c\uc544\ubcf4\uace0,<br \/><br \/>\uc77c\ub2e8 Cache Manager \ub355\ubd84\uc5d0 Fast I\/O\ub97c \n\ucc98\ub9ac\ud574\uc918\uc57c\ud55c\ub2e4.<br \/><br \/>Fast I\/O \ub514\uc2a4\ud328\uce58 \ud568\uc218\ub97c \ub4f1\ub85d\ud558\ub294 \uac83\uc740<br \/><br \/>\ud30c\uc77c \uc2dc\uc2a4\ud15c \ud544\ud130 \ub4dc\ub77c\uc774\ubc84\uac00 \uc77c\ub2e8 \ud30c\uc77c\uc2dc\uc2a4\ud15c \uc704\uc5d0 \ud544\ud130\ub85c \n\ubd99\uc5b4\uc788\uac8c \ub41c\ub2e4.<br \/><br \/>\uadf8\ub807\uac8c \ub418\uba74 \ud30c\uc77c \uc2dc\uc2a4\ud15c \ub4dc\ub77c\uc774\ubc84\uac00 Fast I\/O\ub85c \ud1b5\uc2e0\ud558\ub294\uac83\uc744 \ucc98\ub9ac\ud560 \uc218\uc788\uc5b4\uc57c<br \/><br \/>\ud558\uc704 \uc2a4\ud0dd\uc73c\ub85c \uc790\ub8cc\ub97c \n\ubcf4\ub0bc \uc218 \uc788\ub294 \uac83\uc774\ub2e4.<br \/><br \/>\uadf8\ub9ac\ud558\uc5ec FSFD\ub294 \ub370\uc774\ud130 \uc804\uc1a1\uc744 \uc704\ud574 \uc9c1\uc811 Cache Manager\uc640 \ud1b5\uc2e0\ud558\uae30 \uc704\ud574<br \/><br \/>\uc774\ub97c \n\ucc98\ub9ac\ud558\uae30 \uc704\ud55c Fast I\/O Dispatch Routine\uc744 \ub4f1\ub85d\ud558\ub294 \uac83\uc774\ub2e4. <\/div>\n<div class=\"article_post\">&nbsp;<\/div>\n<div class=\"article_post\">\ucd9c\ucc98 : <a class=\"con_link\" href=\"http:\/\/ssmhz.tistory.com\/147\" target=\"_blank\" rel=\"noopener\">http:\/\/ssmhz.tistory.com\/147\n<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Filemon\uacfc SFilter\ub97c \uc608\ub85c \ub4e4\uc5b4\uc11c \uc124\uba85\ud558\uc790, \uc77c\ub2e8 Filemon\uc740 \ub3d9\uc801 \ud544\ud130 \ub4dc\ub77c\uc774\ubc84\uc774\ub2e4. SFilter\uc640\ub294 \ub2e4\ub974\uac8c \uc7ac\ubd80\ud305\uc744 \uc694\ud558\ub294 \ub9cc\ud07c\uc758 \uc791\uc5c5\uc740 \ud544\uc694\uac00 \uc5c6\ub2e4. \ub2e8\uc9c0 \ud30c\uc77c\uc758 \uc785\ucd9c\ub825\uc744 \uac10\uc2dc\ud560\ubfd0, \uc774\uc815\ub3c4\uc758 \uae30\ub2a5\uc774\ub77c\uba74 SDT \ud6c4\ud0b9\uc744 \ud574\uc11c \uad6c\ud604\ud560 \uc218\ub3c4 \uc788\uc744 \uac83 \uac19\ub2e4, \ud558\uc9c0\ub9cc \ub0b4\ubd80\uc801\uc73c\ub85c \uc5c4\uccad\ub098\uac8c \uc798\uc9dc\ub1a8\uaca0\uc9c0, &#8211; _-; \uc77c\ub2e8 DriverEntry()\ub97c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ub8e8\ud2f4\uc774 \uc874\uc7ac\ud55c\ub2e4. \ud30c\uc77c \uc2dc\uc2a4\ud15c \ud544\ud130 \ub4dc\ub77c\uc774\ubc84\ub97c \uc791\uc131\ud558\ub2e4\ubcf4\uba74, Fast I\/O\uc5d0 \ub300\ud574\uc11c \ub9ce\uc774 \ubcf4\uac8c [&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-187","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\/187","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=187"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/187\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}