{"id":195,"date":"2010-04-18T00:26:27","date_gmt":"2010-04-18T09:26:27","guid":{"rendered":"\/blog\/?p=195"},"modified":"2023-09-21T09:39:12","modified_gmt":"2023-09-21T00:39:12","slug":"ddk-driver_object-%ea%b5%ac%ec%a1%b0%ec%b2%b4%eb%a5%bc-%ec%95%8c%ec%95%84%eb%b3%b4%ec%9e%90","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=195","title":{"rendered":"[DDK] DRIVER_OBJECT \uad6c\uc870\uccb4\ub97c \uc54c\uc544\ubcf4\uc790!!"},"content":{"rendered":"\n<p>DRIVER_OBJECT\uc640 DEVICE_OBJECT \uad6c\uc870\uccb4\ub294 \uc911\uc694\ud558\ub2e4.<br \/><br \/>\ub450\uac1c\uac00 \ud5f7\uac08\ub824 \ud558\ub294 \uacbd\uc6b0\ub3c4 \ub9ce\uc740\ub370, <br \/><br \/>\uc77c\ub2e8 \nDRIVER_OBJECT\ub294 \ud568\uc218\ud3ec\uc778\ud130\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\ub2e4.<br \/><br \/>\ub098\uba38\uc9c0 \ud544\ub4dc\ub294 \uc9c1\uc811 \uc218\uc815\uc744 \ud558\uba74 \uc548\ub418\ub294 \ubd80\ubd84\ub3c4 \uc788\ub2e4.<br \/>\n<\/p><div class=\"dp-highlighter\">\n<ol class=\"dp-cpp\"><li class=\"alt\"><span><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;_DRIVER_OBJECT \n &nbsp;<\/span><\/span> \n<\/li><li><span>{ &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;CSHORT Type; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;CSHORT Size; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;PDEVICE_OBJECT DeviceObject; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;<\/span><span class=\"datatypes\"><strong><font color=\"#2e8b57\">ULONG<\/font><\/strong><\/span><span>&nbsp;Flags; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;<\/span><span class=\"datatypes\"><strong><font color=\"#2e8b57\">PVOID<\/font><\/strong><\/span><span>&nbsp;DriverStart; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;<\/span><span class=\"datatypes\"><strong><font color=\"#2e8b57\">ULONG<\/font><\/strong><\/span><span>&nbsp;DriverSize; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;<\/span><span class=\"datatypes\"><strong><font color=\"#2e8b57\">PVOID<\/font><\/strong><\/span><span>&nbsp;DriverSection; &nbsp; <\/span> \n\n<\/li><li><span>&nbsp; &nbsp;PDRIVER_EXTENSION DriverExtension; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;UNICODE_STRING DriverName; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;PUNICODE_STRING HardwareDatabase; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;PFAST_IO_DISPATCH FastIoDispatch; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;PDRIVER_INITIALIZE DriverInit; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;PDRIVER_STARTIO DriverStartIo; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp;PDRIVER_UNLOAD DriverUnload; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION +&nbsp;1]; \n &nbsp;<\/span> \n<\/li><li><span>} DRIVER_OBJECT; &nbsp;<\/span><\/li><\/ol><\/div>&lt;TEXTAREA class=\"cpp\" \nstyle=\"DISPLAY: none\" name=code rows=10 cols=60&gt;typedef struct _DRIVER_OBJECT \n{ CSHORT Type; CSHORT Size; PDEVICE_OBJECT DeviceObject; ULONG Flags; PVOID \nDriverStart; ULONG DriverSize; PVOID DriverSection; PDRIVER_EXTENSION \nDriverExtension; UNICODE_STRING DriverName; PUNICODE_STRING HardwareDatabase; \nPFAST_IO_DISPATCH FastIoDispatch; PDRIVER_INITIALIZE DriverInit; PDRIVER_STARTIO \nDriverStartIo; PDRIVER_UNLOAD DriverUnload; PDRIVER_DISPATCH \nMajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; } DRIVER_OBJECT; &lt;\/TEXTAREA&gt; \n<br \/>\uc544\ub798\ub294 \ud754\ud788 \ubcf4\ub294 \ucf54\ub4dc\uc774\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>NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegPath ) \n &nbsp;<\/span><\/span> \n<\/li><li><span>{ &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; UNICODE_STRING symName, symDevice; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; PDEVICE_OBJECT pDeviceObject0, pDeviceObject1; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; PDEVICE_EXTENSION pExt; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; NTSTATUS status; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;&nbsp; &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\">\/\/ UniCode String\uc744 \ucd08\uae30\ud654\ud55c\ub2e4. <\/font><\/span><span>&nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; RtlInitUnicodeString(&amp;symDevice, L<\/span><span class=\"string\"><font color=\"#0000ff\">\"\\\\Device\\\\System0\"<\/font><\/span><span>); \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; RtlInitUnicodeString(&amp;symName, L<\/span><span class=\"string\"><font color=\"#0000ff\">\"\\\\??\\\\UserSystem0\"<\/font><\/span><span>); \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;&nbsp; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; status =&nbsp;IoCreateDevice( DriverObject, <\/span><span class=\"keyword\"><strong><font color=\"#006699\">sizeof<\/font><\/strong><\/span><span>(DEVICE_EXTENSION),&nbsp; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;symDevice, FILE_DEVICE_HZ, 0, FALSE, &amp;pDeviceObject0 ); \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; <\/span><span class=\"keyword\"><strong><font color=\"#006699\">if<\/font><\/strong><\/span><span>( NT_SUCCESS( status )&nbsp;) \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp; { &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"comment\"><font color=\"#008200\">\/\/ device Extention\uc73c\ub85c \ubcc0\ud658\ud55c\ub2e4. <\/font><\/span><span>&nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; &nbsp; &nbsp; pExt =&nbsp;(PDEVICE_EXTENSION)pDeviceObject0-&gt;DeviceExtension; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"comment\"><font color=\"#008200\">\/\/ Success <\/font><\/span><span>&nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; &nbsp; &nbsp; pExt-&gt;Ordinal =&nbsp;0; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; &nbsp; &nbsp; status =&nbsp;IoCreateSymbolicLink( &amp;symName, &amp;symDevice ); \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"comment\"><font color=\"#008200\">\/\/ IoCreateSymbolicLink() \uac00&nbsp;\uc2e4\ud328 \ud558\uba74 \n<\/font><\/span><span>&nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"keyword\"><strong><font color=\"#006699\">if<\/font><\/strong><\/span><span>( !NT_SUCCESS( status )&nbsp;) \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IoDeleteDevice( pDeviceObject0 ); &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pExt-&gt;Ordinal =&nbsp;-1; &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; } &nbsp; <\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp;&nbsp; &nbsp; <\/span> \n<\/li><li><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 class=\"alt\"><span>&nbsp; &nbsp; DriverObject-&gt;DriverUnload =&nbsp;HzUnload; &nbsp; <\/span> \n<\/li><li><span>&nbsp; &nbsp; DriverObject-&gt;MajorFunction[ IRP_MJ_CREATE ]&nbsp;= hzIoDispatch; \n &nbsp;<\/span> \n<\/li><li class=\"alt\"><span>&nbsp; &nbsp; DriverObject-&gt;MajorFunction[ IRP_MJ_CLOSE ]&nbsp;= hzIoDispatch; \n &nbsp;<\/span> \n<\/li><li><span>&nbsp; &nbsp;&nbsp; &nbsp; <\/span> \n<\/li><li class=\"alt\"><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><span>} &nbsp;<\/span><\/li><\/ol><\/div>\n<p>&lt;TEXTAREA class=\"cpp\" style=\"DISPLAY: none\" name=code rows=10 \ncols=60&gt;NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN \nPUNICODE_STRING RegPath ) { UNICODE_STRING symName, symDevice; PDEVICE_OBJECT \npDeviceObject0, pDeviceObject1; PDEVICE_EXTENSION pExt; NTSTATUS status; \/\/ \ub4dc\ub77c\uc774\ubc84 \n\ub85c\ub4dc\ub41c \uac83\uc744 DebugView\uc5d0 \ubfcc\ub824\uc900\ub2e4. DbgPrint(\"HzDevice is Loaded\\n\"); \/\/ UniCode String\uc744 \n\ucd08\uae30\ud654\ud55c\ub2e4. RtlInitUnicodeString(&amp;symDevice, L\"\\\\Device\\\\System0\"); \nRtlInitUnicodeString(&amp;symName, L\"\\\\??\\\\UserSystem0\"); status = \nIoCreateDevice( DriverObject, sizeof(DEVICE_EXTENSION), &amp;symDevice, \nFILE_DEVICE_HZ, 0, FALSE, &amp;pDeviceObject0 ); if( NT_SUCCESS( status ) ) { \/\/ \ndevice Extention\uc73c\ub85c \ubcc0\ud658\ud55c\ub2e4. pExt = \n(PDEVICE_EXTENSION)pDeviceObject0-&gt;DeviceExtension; \/\/ Success \npExt-&gt;Ordinal = 0; status = IoCreateSymbolicLink( &amp;symName, \n&amp;symDevice ); \/\/ IoCreateSymbolicLink() \uac00 \uc2e4\ud328 \ud558\uba74 if( !NT_SUCCESS( status ) ) \n{ IoDeleteDevice( pDeviceObject0 ); pExt-&gt;Ordinal = -1; } } \/\/ Dispatch \nTable\uc744 \uc791\uc131\ud55c\ub2e4. DriverObject-&gt;DriverUnload = HzUnload; \nDriverObject-&gt;MajorFunction[ IRP_MJ_CREATE ] = hzIoDispatch; \nDriverObject-&gt;MajorFunction[ IRP_MJ_CLOSE ] = hzIoDispatch; return \nSTATUS_SUCCESS; } &lt;\/TEXTAREA&gt; <br \/><br \/>\uc5ec\uae30\uc11c \ubcf4\uba74 Driver_Object \uad6c\uc870\uccb4\uc5d0\uc11c \nMajorFunction\uc5d0 \ud568\uc218 \ud3ec\uc778\ud130\ub97c \ub123\uc5b4\uc8fc\ub294 \ubd80\ubd84\uc774 \ubcf4\uc778\ub2e4.<br \/><br \/>\uc911\uc694 \ud544\ub4dc\uc758 \ubcc0\uc218\ub4e4\uc744 \ud55c\ubc88 \uc0b4\ud3b4 \ubcf4\uc790,<br \/><br \/>&nbsp;\u261e \n<font color=\"#ff0000\">DeviceObject<\/font> - \ub4dc\ub77c\uc774\ubc84\uac00 \uac00\uc7a5 \ucd5c\uadfc\uc5d0 \uc0dd\uc131\ud55c DeviceObject\ub97c \uac00\ub974\ud0a4\ub294 \n\ud3ec\uc778\ud130 <br \/>&nbsp;\u261e <font color=\"#ff0000\">DeviceExtension<\/font> - \ud558\uc704 \ub808\ubca8 \ub4dc\ub77c\uc774\ubc84\uc5d0\uc11c \ud558\ub4dc\uc6e8\uc5b4 \uc7a5\uce58\uc640 \uc8fc\ubcc0 \n\uc7a5\uce58\ub4e4\uc744 \uad00\ub9ac\ud558\uae30\uc704\ud55c PnP \uc9c0\uc6d0 \ud544\ub4dc<br \/>&nbsp;\u261e <font color=\"#ff0000\">DriverStart<\/font> - \ub4dc\ub77c\uc774\ubc84\uac00 \uba54\ubaa8\ub9ac\uc5d0 \n\ubcf4\uad00\ub41c \uc2dc\uc791 \uc704\uce58<br \/>&nbsp;\u261e <font color=\"#ff0000\">DriverName<\/font> - \ub4dc\ub77c\uc774\ubc84\uc758 \uc11c\ube44\uc2a4 \uc774\ub984<br \/>&nbsp;\u261e <font color=\"#ff0000\">HardwareDatabase<\/font> - \ub4dc\ub77c\uc774\ubc84\uac00 \ub4f1\ub85d\ub418\uc5b4 \uc788\ub294 \uc11c\ube44\uc2a4 \ud0a4<br \/>&nbsp;\u261e <font color=\"#ff0000\">DriverInit<\/font> - DriverEntry \ud568\uc218 \uc8fc\uc18c<br \/>&nbsp;\u261e <font color=\"#ff0000\">MajorFunction<\/font> - \ub4dc\ub77c\uc774\ubc84\uac00 \ucc98\ub9ac\ud558\ub294 IRP \uba85\ub839\uc5b4\ub97c \uc704\ud55c Dispatch \nRoutine\ub4e4<br \/><br \/>\uc704\uc758 \uc608\uc81c \ucf54\ub4dc\uc640 \uc704\uc758 \uc124\uba85\uc744 \ubcf4\uac8c \ub418\uba74, \uc774\ud574\ud558\uae30 \uc26c\uc6b8 \uac83\uc774\ub2e4.<br \/><br \/>\ub2e4\uc74c\uc5d0\ub294 DEVICE_OBJECT \n\uad6c\uc870\uccb4\ub97c \uc54c\uc544\ubcf4\uc790,<\/p>\n<p>&nbsp;<\/p>\n<p>\ucd9c\ucc98 : \ucd9c\ucc98 : <a class=\"con_link\" href=\"http:\/\/ssmhz.tistory.com\/\" target=\"_blank\" rel=\"noopener\">http:\/\/ssmhz.tistory.com\n<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DRIVER_OBJECT\uc640 DEVICE_OBJECT \uad6c\uc870\uccb4\ub294 \uc911\uc694\ud558\ub2e4. \ub450\uac1c\uac00 \ud5f7\uac08\ub824 \ud558\ub294 \uacbd\uc6b0\ub3c4 \ub9ce\uc740\ub370, \uc77c\ub2e8 DRIVER_OBJECT\ub294 \ud568\uc218\ud3ec\uc778\ud130\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\ub2e4. \ub098\uba38\uc9c0 \ud544\ub4dc\ub294 \uc9c1\uc811 \uc218\uc815\uc744 \ud558\uba74 \uc548\ub418\ub294 \ubd80\ubd84\ub3c4 \uc788\ub2e4. typedef&nbsp;struct&nbsp;_DRIVER_OBJECT &nbsp; { &nbsp; &nbsp; &nbsp;CSHORT Type; &nbsp; &nbsp; &nbsp;CSHORT Size; &nbsp; &nbsp; &nbsp;PDEVICE_OBJECT DeviceObject; &nbsp; &nbsp; &nbsp;ULONG&nbsp;Flags; &nbsp; &nbsp; &nbsp;PVOID&nbsp;DriverStart; &nbsp; &nbsp; &nbsp;ULONG&nbsp;DriverSize; &nbsp; &nbsp; &nbsp;PVOID&nbsp;DriverSection; &nbsp; &nbsp; &nbsp;PDRIVER_EXTENSION DriverExtension; &nbsp; &nbsp; [&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-195","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\/195","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=195"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/195\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}