⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntldr其他相关函数分析.mht

📁 详细讲解了Window系统引导加载ntldr的过程和部分代码分析
💻 MHT
📖 第 1 页 / 共 5 页
字号:
      </SPAN>&nbsp;<BR>;<SPAN style=3D"DISPLAY: none"> =
=1A7=13=08=11=1Am=3Dsi=20
      </SPAN>&nbsp;<BR>; Enable protect and paging mode<SPAN=20
      style=3D"DISPLAY: none"> plgh;=17|i(^ </SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> (=11]u=1Bj$m[0 </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; mov=20
      &nbsp; &nbsp; eax,cr0<SPAN style=3D"DISPLAY: none"> &amp;if^=10B =
=3D=12=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">xS'EXDpr=02u =
</SPAN>&nbsp;<BR>;=20
      If we're enabling protect mode for the first time, don't turn on=20
      paging<SPAN style=3D"DISPLAY: none"> EeAts=06z=18(=3D =
</SPAN>&nbsp;<BR>; because=20
      the osloader does all that. However, if we're returning to<SPAN=20
      style=3D"DISPLAY: none"> !n=07=0FLyxGm; </SPAN>&nbsp;<BR>; =
protected mode, the=20
      page tables are already setup, therefore we do want<SPAN=20
      style=3D"DISPLAY: none"> =08:q{?YRy=0F=19 </SPAN>&nbsp;<BR>; to =
turn paging=20
      on.<SPAN style=3D"DISPLAY: none"> v=1D=02;,a;J9O =
</SPAN>&nbsp;<BR>&nbsp; &nbsp;=20
      or &nbsp; &nbsp; dx,dx<SPAN style=3D"DISPLAY: none"> H{q 1Dp1~'=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; jz &nbsp; &nbsp; only_prot<SPAN=20
      style=3D"DISPLAY: none"> btw,6O=1F-=028 </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; or &nbsp;=20
      &nbsp; eax,PROT_MODE + ENABLE_PAGING<SPAN style=3D"DISPLAY: none"> =

      C=18=1CA=0E\|Eq7 </SPAN>&nbsp;<BR>&nbsp; &nbsp; mov &nbsp; =
cr0,eax<SPAN=20
      style=3D"DISPLAY: none"> =02=0Ek=16U o+\1 </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">R$L&amp;H}m4I# </SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> E=1E_=04=16(=10=028b </SPAN>&nbsp;<BR>; =
The following JMP=20
      must be DWORD-aligned in order to avoid an obscure i386<SPAN=20
      style=3D"DISPLAY: none"> U=04SDS=01y4=06' </SPAN>&nbsp;<BR>; =
hardware bug. If not,=20
      it is possible (albeit unlikely) that the prefetch<SPAN=20
      style=3D"DISPLAY: none"> Y=03w}r;-#B&lt; </SPAN>&nbsp;<BR>; queue =
can get=20
      trashed.<SPAN style=3D"DISPLAY: none"> \RV^'=10b=3Dhi =
</SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> og4p*r;=06Oh </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">&gt;g=1EkUHi"0=11 </SPAN>&nbsp;<BR>ALIGN =
4<SPAN=20
      style=3D"DISPLAY: none"> T=18f=18zR 0=0F5 </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; jmp=20
      &nbsp; flush<SPAN style=3D"DISPLAY: none"> L$=14"nmbBb- =
</SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">=19 &gt;ufDEu-" </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">Ikq'=13=157=17`=15 =
</SPAN>&nbsp;<BR>only_prot:<SPAN=20
      style=3D"DISPLAY: none"> L;Q0f}n%=0E' </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; or &nbsp;=20
      &nbsp; eax,PROT_MODE<SPAN style=3D"DISPLAY: none"> =
'4=04=17mc*'=1CB=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; mov &nbsp; &nbsp; cr0,eax<SPAN=20
      style=3D"DISPLAY: none"> ZZ6=3D Kxs\- </SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> aG:l}D=19fL=16 </SPAN>&nbsp;<BR>; Flush =
the prefetch=20
      queue<SPAN style=3D"DISPLAY: none"> `h,2=12)4O=10 =
</SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> CA'=08&lt;a?%61 </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">I*g_+Bq9OO </SPAN>&nbsp;<BR>ALIGN 4<SPAN=20
      style=3D"DISPLAY: none"> j9=18 IkEBB6 </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; jmp=20
      &nbsp; flush<SPAN style=3D"DISPLAY: none"> pj=15w7LDU=03=16=20
      </SPAN>&nbsp;<BR>flush:<SPAN style=3D"DISPLAY: none"> q?@ =
=08h&lt;drM=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: =
none">:=05=03XD&gt;M3=02=04=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">4l6Wv=1Af=1EDX=20
      </SPAN>&nbsp;<BR>;<SPAN style=3D"DISPLAY: none"> ZfY*Xz G=04I=20
      </SPAN>&nbsp;<BR>; Load CS with the SU module's code selector<SPAN =

      style=3D"DISPLAY: none"> ]W=14=05K=1C=3Dvt </SPAN>&nbsp;<BR>;<SPAN =

      style=3D"DISPLAY: none"> 7"iBv%=0F=03E=03 </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; push=20
      &nbsp; SuCodeSelector<SPAN style=3D"DISPLAY: none"> =
kk9]=13B=3D`=14=0E=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; push &nbsp; offset cs:restart<SPAN=20
      style=3D"DISPLAY: none"> =1F6}=022dW =0Eq </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; retf<SPAN=20
      style=3D"DISPLAY: none"> zXYrN_=15=05-k </SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> =15=10srTy~=1A=13=1D </SPAN>&nbsp;<BR>; =
Now load DS and SS=20
      with the SU module's protect mode data selector.<SPAN=20
      style=3D"DISPLAY: none"> H5&amp;*=17:LB=04=1D =
</SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> hJ 2%=10=0F=16=07 </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">XZ=03^[1V{ </SPAN>&nbsp;<BR>restart:<SPAN=20
      style=3D"DISPLAY: none"> &lt;ZFnm=07OTA </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; mov=20
      &nbsp; &nbsp; ax,SuDataSelector<SPAN style=3D"DISPLAY: none"> =
w-&amp;MO/vJPt=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; mov &nbsp; &nbsp; ds,ax<SPAN=20
      style=3D"DISPLAY: none"> ;Ru/:=06D5p </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; mov &nbsp;=20
      &nbsp; ss,ax<SPAN style=3D"DISPLAY: none"> .=15-, UJ]rW =
</SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">Bjj=0E"%z=14Ah </SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> R 5xIh=04 </SPAN>&nbsp;<BR>; Load LDT =
with zero since=20
      it will never be used.<SPAN style=3D"DISPLAY: none"> vs-fdm=05MW;=20
      </SPAN>&nbsp;<BR>;<SPAN style=3D"DISPLAY: none"> ) =
=14t3CJ&amp;=0E[=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; xor &nbsp; &nbsp; bx,bx<SPAN=20
      style=3D"DISPLAY: none"> &lt;L.T=18=11Z=135H =
</SPAN>&nbsp;<BR>&nbsp; &nbsp; lldt=20
      &nbsp; bx<SPAN style=3D"DISPLAY: none"> =14UYog1o p=11 =
</SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">'-!~=1BU\a^r </SPAN>&nbsp;<BR>;<SPAN=20
      style=3D"DISPLAY: none"> 6:fI=16=15$%=1F% </SPAN>&nbsp;<BR>; Load =
the Task=20
      Register and return to the boot SU module.<SPAN style=3D"DISPLAY: =
none">=20
      %=12C8r=18;=3D%| </SPAN>&nbsp;<BR>;<SPAN style=3D"DISPLAY: none"> =
`;=15=15=1A&gt;=13=06LI=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; or &nbsp; &nbsp; dx,dx<SPAN=20
      style=3D"DISPLAY: none"> H=19F8`ry f[ </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; jnz=20
      &nbsp; &nbsp; epp10<SPAN style=3D"DISPLAY: none"> j_tvlr+H=12=1E=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">*X+EsZ=1E=13hG=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">=11qj=08=05'@;N~=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; mov &nbsp; &nbsp; =
bx,TSS_Selector<SPAN=20
      style=3D"DISPLAY: none"> R%=12b3RN\c=3D </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; ltr=20
      &nbsp; &nbsp; bx<SPAN style=3D"DISPLAY: none"> E=08=13=13[A{oNQ=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">=1D=0F =
i=18(=3D{=0E=3D=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">H=14rS&amp;Hg"y=3D=20
      </SPAN>&nbsp;<BR>epp10:<SPAN style=3D"DISPLAY: none"> =10=17 =
d'v=03PV=15=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; ret<SPAN style=3D"DISPLAY: none"> =
=06=070g.xCP=03=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">pofPd7TQ=16=20
      </SPAN>&nbsp;<BR>_EnableProtectPaging endp<SPAN style=3D"DISPLAY: =
none">=20
      f=1D=1C=17)z[~j=08 </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: =
none">=1Bn=0E=04X(g|i_=20
      </SPAN>&nbsp;<BR>WRITE_PORT_UCHAR =
=BA=EA=BA=AF=CA=FD=B7=D6=CE=F6:<SPAN style=3D"DISPLAY: none">=20
      CsK[k=07r# 2 </SPAN>&nbsp;<BR>cPublicProc _WRITE_PORT_UCHAR,2<SPAN =

      style=3D"DISPLAY: none"> t zaN8c6Lz </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">P{"x=10NN R </SPAN>&nbsp;<BR>&nbsp; &nbsp; =
mov &nbsp;=20
      dx,[esp+4] &nbsp; &nbsp; &nbsp; &nbsp; ; (dx) =3D Port<SPAN=20
      style=3D"DISPLAY: none"> :2&gt;E -f=06| </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; mov=20
      &nbsp; al,[esp+8] &nbsp; &nbsp; &nbsp; &nbsp; ; (al) =3D =
Value<SPAN=20
      style=3D"DISPLAY: none"> I=0Eci)`=16 w </SPAN>&nbsp;<BR>&nbsp; =
&nbsp; out &nbsp;=20
      dx,al<SPAN style=3D"DISPLAY: none"> =1EnsLd A=18)# =
</SPAN>&nbsp;<BR>&nbsp;=20
      &nbsp; stdRET _WRITE_PORT_UCHAR<SPAN style=3D"DISPLAY: none"> =
(=19=19=1AGKDY=14=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">/5M [|Y%=20
      </SPAN>&nbsp;<BR>stdENDP _WRITE_PORT_UCHAR<SPAN style=3D"DISPLAY: =
none">=20
      &gt;?/-,=12=06=15q2 </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: =
none">=16j =07G0 =05=20
      </SPAN>&nbsp;<BR>MdShutoffFloppy()=BA=AF=CA=FD=B7=D6=CE=F6:<SPAN =
style=3D"DISPLAY: none">=20
      oO=01ls!kS </SPAN>&nbsp;<BR>VOID MdShutoffFloppy( VOID )<SPAN=20
      style=3D"DISPLAY: none"> (U=15:Id2E&lt;=10 </SPAN>&nbsp;<BR>// =
=CA=B5=BC=CA=CB=FB=D6=BB=CA=C7=20
      =
WRITE_PORT_UCHAR=BA=EA=BA=AF=CA=FD=B5=C4=BD=D3=BF=DA,=B9=D8=B1=D5=C8=ED=C5=
=CC=C2=ED=B4=EF<SPAN style=3D"DISPLAY: none"> =04^Ea=18hzH=0E=20
      </SPAN>&nbsp;<BR>{<SPAN style=3D"DISPLAY: none"> =
f0l8=18=02=1C;=0E.=20
      </SPAN>&nbsp;<BR>&nbsp; UCHAR Value;<SPAN style=3D"DISPLAY: none"> =
6}=16;7#JK=1E=20
      </SPAN>&nbsp;<BR>&nbsp; // #define FLOPPY_CONTROL_REGISTER=20
      (PUCHAR)0x3f2<SPAN style=3D"DISPLAY: none"> =03=14:$=04e[$g{=20
      </SPAN>&nbsp;<BR>&nbsp; WRITE_PORT_UCHAR( FLOPPY_CONTROL_REGISTER, =
0xC=20
      );<SPAN style=3D"DISPLAY: none"> =03zs"9Je@ u =
</SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">}=1B{4 JaJdH </SPAN>&nbsp;<BR>}<SPAN=20
      style=3D"DISPLAY: none"> &amp;,DF{=05R=18=13 =
</SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">v]4f k!=1BOI </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">)y=04s!VRMXx=20
      </SPAN>&nbsp;<BR>BlSelectKernel()=BA=AF=CA=FD=B7=D6=CE=F6:<SPAN =
style=3D"DISPLAY: none"> b*:S=08=20
      PT;@ </SPAN>&nbsp;<BR>PCHAR BlSelectKernel(IN ULONG DriveId,<SPAN=20
      style=3D"DISPLAY: none"> =16E$Ax'=07M+i </SPAN>&nbsp;<BR>IN PCHAR =
BootFile,<SPAN=20
      style=3D"DISPLAY: none"> G=05=077h=04c=03H} </SPAN>&nbsp;<BR>OUT =
PCHAR=20
      *LoadOptions,<SPAN style=3D"DISPLAY: none"> kD; =16^=1FY=19=20
      </SPAN>&nbsp;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
IN=20
      BOOLEAN UseTimeOut<SPAN style=3D"DISPLAY: none"> =03/=08 zF.0=14G=20
      </SPAN>&nbsp;<BR>)<SPAN style=3D"DISPLAY: none"> =1Bm7U-=19Z^G=20
      </SPAN>&nbsp;<BR>// =
=D4=DA=B5=A5=BB=FA=C9=CF=B0=B2=D7=B0=CB=AB=CF=B5=CD=B3=B5=C4=C8=CB=B6=BC=D3=
=A6=B8=C3=D6=AA=B5=C0,=D4=DA=C6=F4=B6=AF=B5=C4=B9=FD=B3=CC=D6=D0,=BB=E1=D3=
=D0=B3=F6=CF=D6=D2=BB=B8=F6=D1=A1=D4=F1=B2=CB=B5=A5=C8=C3=C4=E3=D1=A1=D4=F1=
=D2=AA=C6=F4=B6=AF=B5=C4=CF=B5=CD=B3,<SPAN=20
      style=3D"DISPLAY: none"> $#^\)4rM}I </SPAN>&nbsp;<BR>//=20
      =
=B8=C3=BA=AF=CA=FD=BE=CD=B8=BA=D4=F0=D5=E2=D2=BB=B2=BD.=C6=E4=D6=D0=B5=C4=
=B4=FA=C2=EB=B4=F3=B2=BF=B7=D6=CA=C7=B6=D4boot.ini=CE=C4=BC=FE=B5=C4=BD=E2=
=CE=F6,=CE=D2=D2=D4=C7=B0=CB=B5=B9=FD,=CE=D2=B6=D4=D7=D6=B7=FB=D6=AE=C0=E0=
=B5=C4=B2=D9=D7=F7=B2=BB//=20
      =
=CA=C7=CC=AB=D4=DA=D0=D0,=CB=F9=D2=D4=BE=CD=C3=BB=D3=D0=B7=D6=CE=F6,=D7=DC=
=D6=AE=CA=C7=D1=A1=D4=F1boot.ini=C5=E4=D6=C3=CE=C4=BC=FE=D6=D0=D2=AA=C6=F4=
=B6=AF=B5=C4=CF=B5=CD=B3=C4=DA=BA=CB<SPAN style=3D"DISPLAY: none">=20
      {=06G=12a^b)&amp;L </SPAN>&nbsp;<BR>Arguments:<SPAN =
style=3D"DISPLAY: none">=20
      Cj=07rN]=15n=02: </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: =
none">,U%A-bm=01hh=20
      </SPAN>&nbsp;<BR>&nbsp; BootFile - Pointer to the beginning of the =
loaded=20
      boot.txt file<SPAN style=3D"DISPLAY: none"> =13h;Ggm )| =
</SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">]m=14=06)v/] 3 </SPAN>&nbsp;<BR>&nbsp; =
Debugger -=20
      Returns the enable/disable state of the kernel debugger<SPAN=20
      style=3D"DISPLAY: none"> =1Fc 4S=12v=12#M </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">=05m/4@J|=1B$/ </SPAN>&nbsp;<BR>&nbsp; =
UseTimeOut -=20
      Supplies whether the boot menu should time out or not.<SPAN=20
      style=3D"DISPLAY: none"> WT'j=3D.,=16] </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">p{+:=12"t=3DmD </SPAN>&nbsp;<BR>Return =
Value:<SPAN=20
      style=3D"DISPLAY: none"> =05 `=03Z=18`HGM </SPAN>&nbsp;<BR><SPAN=20
      style=3D"DISPLAY: none">&amp;e: WRUWBa </SPAN>&nbsp;<BR>&nbsp; =
Pointer to=20
      the name of a kernel to boot.<SPAN style=3D"DISPLAY: none"> =
=1D?[O=0EE=1Bv9X=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">}+=1D=16=13$4=13p=20
      </SPAN>&nbsp;<BR>--*/<SPAN style=3D"DISPLAY: none"> fMSC2N}6@=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">Yv=07 =08=10`0Q^=20
      </SPAN>&nbsp;<BR>{<SPAN style=3D"DISPLAY: none"> |H=1BQpv(q=11=20
      </SPAN>&nbsp;<BR>&nbsp; PCHAR *MbLines;<SPAN style=3D"DISPLAY: =
none">=20
      =1A=170:9Z7NNX </SPAN>&nbsp;<BR>&nbsp; PCHAR *OsLines;<SPAN=20
      style=3D"DISPLAY: none"> #9Lv1 Y=1F( </SPAN>&nbsp;<BR>&nbsp; PCHAR =

      *FileLines;<SPAN style=3D"DISPLAY: none"> %M?*=3D=1A3 F =
</SPAN>&nbsp;<BR>#if=20
      DBG<SPAN style=3D"DISPLAY: none"> =0Fv.Y=01vyh^` =
</SPAN>&nbsp;<BR>&nbsp; PCHAR=20
      *DebugLines;<SPAN style=3D"DISPLAY: none"> =0F)=1E=05'y% iZ=20
      </SPAN>&nbsp;<BR>&nbsp; ULONG DebugLineCount;<SPAN =
style=3D"DISPLAY: none">=20
      5MX_~8P=07xW </SPAN>&nbsp;<BR>#endif<SPAN style=3D"DISPLAY: none"> =
4d=08!,=17=17~=18x=20
      </SPAN>&nbsp;<BR>&nbsp; ULONG FileLineCount;<SPAN =
style=3D"DISPLAY: none"> P=20
      tQ0tZ"=3D=19 </SPAN>&nbsp;<BR>&nbsp; ULONG OsLineCount;<SPAN=20
      style=3D"DISPLAY: none"> =02=03=1Dk=1E34iO=17 =
</SPAN>&nbsp;<BR>&nbsp; ULONG=20
      MbLineCount;<SPAN style=3D"DISPLAY: none"> uBE=036A=17 {7=20
      </SPAN>&nbsp;<BR>&nbsp; PCHAR pCurrent;<SPAN style=3D"DISPLAY: =
none"> =1B=20
      =1FLc.EECa </SPAN>&nbsp;<BR>&nbsp; PCHAR Option;<SPAN =
style=3D"DISPLAY: none">=20
      c9b#&lt;N#pJB </SPAN>&nbsp;<BR>&nbsp; MENU_OPTION=20
      MenuOption[MAX_SELECTIONS+1];<SPAN style=3D"DISPLAY: none"> =
Z=16s,ntv!=15;=20
      </SPAN>&nbsp;<BR>&nbsp; ULONG NumberSystems=3D0;<SPAN =
style=3D"DISPLAY: none">=20
      #Iz"Q=12=3DX8P </SPAN>&nbsp;<BR>&nbsp; ULONG i;<SPAN =
style=3D"DISPLAY: none">=20
      =16;QDOh=19=14WQ </SPAN>&nbsp;<BR>&nbsp; LONG Timeout;<SPAN=20
      style=3D"DISPLAY: none"> F3,idi~}l </SPAN>&nbsp;<BR>&nbsp; ULONG=20
      Selection;<SPAN style=3D"DISPLAY: none"> UZM9 7r=03~F =
</SPAN>&nbsp;<BR>&nbsp;=20
      ULONG DefaultSelection=3D0;<SPAN style=3D"DISPLAY: none"> &lt;1 =
T6]=0E{=07b=20
      </SPAN>&nbsp;<BR>&nbsp; static CHAR Kernel[128];<SPAN=20
      style=3D"DISPLAY: none"> Q^~o2Zr4[\ </SPAN>&nbsp;<BR>&nbsp; CHAR=20
      DosName[3];<SPAN style=3D"DISPLAY: none"> 4^PA=04mX=0Fgg =
</SPAN>&nbsp;<BR>&nbsp;=20
      PCHAR DefaultPath=3D"C:\\winnt\\";<SPAN style=3D"DISPLAY: none">=20
      ~D&lt;,{*SU&amp;p </SPAN>&nbsp;<BR>&nbsp; PCHAR DefaultTitle=3D"NT =

      (default)";<SPAN style=3D"DISPLAY: none"> =046rL2 =1BFG&gt;=20
      </SPAN>&nbsp;<BR>&nbsp; PCHAR p;<SPAN style=3D"DISPLAY: none"> =
=01!"=14b=07=1FxAN=20
      </SPAN>&nbsp;<BR><SPAN style=3D"DISPLAY: none">=

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -