sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:6070回复:3

微软员工关于passthru在各windows平台下运行的答复

楼主#
更多 发布于:2002-02-05 14:40
下面是一微软员工关于passthru的一些答复,大家来讨论讨论
有一些乱码,有些地方不知道是怎么回事.

/********************start********************************/

Bryan S. Burgin
bburgin@microsoft.com


Laundry list of issues porting Windows 2000/XP networking DDK samples to Windows 9x/ME.

---
WHICH DDK
---

Use the Windows 2000 DDK.

Do not use the Windows 98 DDK for writing .SYS drivers.  You will only require the Windows 98 DDK for programmatic installation (IPNEW), custom NDI procedures (MyNDI) and for the kernel debugger (WDEB98/RTERM).
 
Do not use the Windows XP DDK if you are developing .SYS drivers for Windows 2000 or Windows 9x/ME.

---


UNSUPPORTED FUNCTIONS/CODE=2
---

Some NDIS/Operating System functions are not supported in Windows 9x/Me and will prevent your driver from loading.  The System Information will report Code=2.  To determine the function that is causing this failure, load the debug version of VxDLDR.VxD to the Windows\\System\\Vmm32 folder.  It will emit debug spew to the kernel debug console with a message similar to $B!H(JPELDR: MyDriver.sys can$B!G(Jt find export <function> in module <ndis>.$B!I(J  You will have to find alternatives for any functions that are not supported.

---
NDIS VERSIONS
---

Be careful to properly match the NDIS version with the target operating system.  The NDIS version for each OS is as follows:

Windows 95: NDIS v 3.10
Windows 98 FE: NDIS v 5.0
Windows 98 SE: NDIS v 5.0
Windows ME: NDIS v 5.0
Windows 2000: NDIS 5.0
Windows XP: NDIS 5.1

Specify the required version number in your SOURCES file with an appropriate -DNDISxx declare.

Also remember to set the proper version number in structures that require versioning, like ProtocolCharacteristics.  Page faults will most likely occur if a higher version is passed in characteristic structures than that which is defined in the SOURCES file.

---
BINARY_COMPATIBLE/FUNCTIONS v MACROS
---

Always define BINARY_COMPATIBLE when building drivers for Windows 9x/Me.  Many NDIS functions are implemented as macros in Windows 2000 and XP.  See the declaration of NdisSend and NdisRequest, both as a macro declaration and as a function prototype.

Failure to do so will yield unpredictable results.  But most likely, a page fault will occur as your driver will jump to a random instruction in memory.

Behind the scenes, the BindingHandle that NidsOpenAdapter returns contains pointers directly to the miniport$B!G(Js handlers, bypassing intermediate calls into NDIS.  This is not supported in Windows 9x/ME.

---
STRINGS/ANSI v UNICODE
---

Functions that use strings, like NdisOpenAdapter and a protocol$B!G(Js BindAdapterHandler will use UNICODE strings in Windows 2000/XP and ANSI strings in Windows 9x/ME.  The DDK will always assume UNICODE strings, so actual manipulation of strings in 9x/Me will require special handling.

A protocol$B!G(Js BindAdapterHandler contains a pointer to the adapter$B!G(Js name, which it generally passes down to NdisOpenAdapter untouched.  This is acceptable in 9x/Me because the contents of the string is never manipulated.  However, in the NDISUIO XP DDK sample, the string is stored as UNICODE for later use.  In the 9x/ME version of NDISUIO, either the copied string must be converted and stored in UNICODE or the driver and corresponding console application must be modified to pass ANSI strings throughout.

---
IM DRIVERS/INF
---

Windows 2000/XP intermediate drivers (PASSTHRU/MUX) install using two .INF files, one for the miniport edge and one for the protocol edge.  The protocol edge installs as a Class=NetTrans.  The miniport edge either installs as a Class=Net (MUX) or as a Class=NetService (PASSTHRU).

Windows 98/ME Intermediate Drivers install using a single .INF file and both edges are stamped as Class=NetTrans.  The real class type of the miniport edge is declared in the special registry entry, $B!H(JHKR,,RealClass,,Net$B!I(J.

---
IM DRIVERS/INF/INSTALL PROBLEMS
---

The file NETLANE.INF in the Windows\\Inf folder has been used as a starting point for installing Windows 9x/ME intermediate drivers.  It installs ATMLANE.SYS, the ATM LAN Emulation driver.

Whereas the ATMLANE example installs cleanly, modifying this sample INF file doesn$B!G(Jt resolve other problems encountered in installing IM drivers in 9x/ME.  ATMLANE$B!G(Js upper and lower bindings are NDISATM and ATMLANE.  In both cases, there$B!G(Js only one binding partner (TCPIP exports NDISATM as its lower edge as well as Ndis3, Ndis4, Ndis5).

Your own driver

---
IM DRIVERS/FIREWALLS
---

Some third-party firewall products find miniports by walking through the HKLM\\Enum registry hive mining for Class=Net devices.  Because the miniport edge of IM drivers in Windows 98/ME is exposed as Class=NetTrans (see IM DRIVERS/INF, above), these firewalls will not notice your miniport.  This is a poor design by these developers and there is no known solution for this situation.

---
IM DRIVERS/WIN95
---

Windows 95 does not support NdisIMInitializeDeviceInstance, whuch is a critical function for the protocol edge to make its internal binding to the miniport edge of your driver.  Porting PASSTHRU to Windows 95, therefore, is not possible.

Protocol drivers and miniport drivers, on the other hand, is possible.
/**********************************************************
其实也就是分别做一个protocol和miniport driver.,也算是中间层吧
***********************************************************/

---
INF DIFFERENCES
---

Windows 2000/XP .INF files contain sections to install services, which include entries for Start, Group, ErrorControl and Type.  Services are not used in Windows 9x/ME.  Instead, DevLoader and DeviceVxDs entries must be created.

Sample Windows 2000/XP INF section:

   [Install.Service]
   AddService=MyDriver,,MYDRIVER_Service_Inst

   [MYDRIVER_Service_Inst]
   DisplayName = %MYDRIVER_Desc%
   ServiceType = 1 ;SERVICE_KERNEL_DRIVER
   StartType = 2 ;SERVICE_AUTO_START
   ErrorControl = 1 ;SERVICE_ERROR_NORMAL
   ServiceBinary = %12%\\packet.sys
   LoadOrderGroup = \"PNP_TDI\"
   AddReg = AddReg_MYDRIVER_Service_Inst
   Description = %MYDRIVER_Desc%

Sample Windows 9x/ME INF section:

   AddReg=MYDRIVER.AddReg

   [MYDRIVER.AddReg]
   HKR,,DevLoader,,\"*ndis,*ntkern\"
   HKR,,DeviceVxDs,,\"MYDRIVER.sys\"

Mine the Windows\\Inf folder for sample .INF files.  Also, review


---
DEBUGING/WIN98
---

The kernel debugger for Windows 98 and Windows 98 SE is contained in the Windows 98 DDK.  On the target system, copy the program WDEB98.EXE to the Windows\\System folder.  In that system$B!G(Js AUTOEXEC.BAT, add:

CD \\WINDOWS\\SYSTEM
WDEB98 /b /c:1 /r=9600 ..\\WIN.COM

/b will cause the system to break when VMM32 starts, this gives a good opportunity to load other symbols (NDIS) and set break points

/c and /r select the com port and its rate.

..\\WIN.COM causes Windows to be executed

On the debug console, run RTERM98.  In Settings|Options, be sure to set an appropriate symbol search path and communications setting.

When the debugger is at a break point (i.e., VMM32 breaks due to /b, above), use $B!F(J?$B!G(J for additional help.

Documentation can be found in the Windows 98 DDK in the Help folder.  Launch Other.Chm and expand Related Driver Documentation\\Windows 95 Documentation\\Programmer$B!G(Js Guide\\WDEB386 System Debugger (WDEB98/RTERM98 was known as WDEB386/RTERM386 in the 95 documentation).

---
DEBUGING/WINME
---

Obtain the Windows ME Debug Kit at http://www.microsoft.com/ddk/debugging.  Download the Microsoft Debugging Tools for Windows Me.  Copy the executable to the target machine, launch, and follow the on screen instructions.  Copy the binary RTERM.EXE to the debug console.

---
DEBUG BINARIES/SYMBOLS/WIN9X
---

The checked binaries for Windows 98 and Windows 98 SE can be found on the MSDN CD labeled $B!H(JWindows 98 Other Versions.$B!I(J

---
DEBUG BINARIES/SYMBOLS/WINME
---

Debug/checked NDIS binaries were not distributed.  They can be downloaded via Knowledgebase article Q241517.  Also view Knowledgebase article Q279356 for tips on using the debug version of NDIS.VxD.
/*************************************************
是不是说ndis的库也能找到debug版的?
*************************************************/
---
SYSTEM FILE PROTECTION (SFP)/WINME
---

Follow the instructions in Q279356 (NDIS Debugging Tips for Windows ME) carefully.  You must disable SFP before replacing any system files in Windows ME, including NDIS.VxD.  Either boot up in safe mode (use F5 when starting Windows) or boot off of a Windows ME startup disk.

Also be aware that anytime you exit Network Neighborhood properties, the original $B!H(Jfree$B!I(J version of NDIS.VxD may be re-installed.  The checked version will be over 300K.

---
NDIS_BUFFER
---

Never touch the elements of NDIS_BUFFER directly.  This structure is vastly different between Windows 98/ME and Windows 2000/XP (where it$B!G(Js a MDL).  Use the NDIS functions to access NDIS_BUFFER elements and treat that structure as completely opaque.  Use NdisQueryBuffer, for example, to obtain a pointer to the buffer$B!G(Js data.

---
RESOURCES
---

Q248413 [Win2K]
INFO: NDIS Debug Tracing and Kernel Debugger Extensions

Q266403 [Win2K]
HOWTO: Enable and Use NDIS Verifier

Q232515 [Win9x]
INFO: NDIS Level and Component Debugging Flags

Q279356 [WinME]
HOWTO: NDIS Debugging Tips for Windows ME

Q198582 [Win2K/Win9x/WinME]
INFO: NDIS Binary-Compatibility on Windows 98 and Windows 2K

Q224784 [Win2K/Win9x/WinME]
HOWTO: Writing WDM/NDIS Miniports for Windows

Q241517 [WinME]
SAMPLE: Ndis.exe Windows ME NDIS Debug Binaries

Q280063 [WinME]
DOC: MillinniumPreferred Directive Added to Net Class INF

Q282757 [WinME]
HOWTO: Use Network Setup Debug Extensions to NetDI for WinME

Q282778 [WinME]
INFO: Setting LowerRange for NDIS Protocol Drivers in WinME

Q285676 [WinME]
TCPIP Packets Discarded via Dial-up NDIS Intermed. Drivers

Q314986 [WinME]
Create NDIS Intermediate Drivers using NDIS Hooking Scheme

Visual C v 1.52c:
MSDN Platform Archive package, Disk 3, $B!H(J16-bit DDKs$B!I(J

Windows 98 and Windows 98 SE debug binaries and symbols:
[TODO] (disk location) $B!H(JWindows 98 Other Versions$B!I(J

/***********************End******************************/

最新喜欢:

wfinewfine ljmmaryljmmar...
111
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2002-02-06 22:57
什么地方有?
我在MS站点上查都没有找到。
Q314986 [WinME]
Create NDIS Intermediate Drivers using NDIS Hooking Scheme

不过我估计是HOOK_DEVICE_SERVICE的方法。

哪位有信息说有人写出来CLEAN INSTALL IMD FILTER?
支持拨号和NDIS802_3的。能够拿到执行码看一看也会
有帮助阿。

下面是一微软员工关于passthru的一些答复,大家来讨论讨论
有一些乱码,有些地方不知道是怎么回事.

/********************start********************************/

Bryan S. Burgin
bburgin@microsoft.com


Laundry list of issues porting Windows 2000/XP networking DDK samples to Windows 9x/ME.

---
WHICH DDK
---

Use the Windows 2000 DDK.

Do not use the Windows 98 DDK for writing .SYS drivers.  You will only require the Windows 98 DDK for programmatic installation (IPNEW), custom NDI procedures (MyNDI) and for the kernel debugger (WDEB98/RTERM).
 
Do not use the Windows XP DDK if you are developing .SYS drivers for Windows 2000 or Windows 9x/ME.

---


UNSUPPORTED FUNCTIONS/CODE=2
---

Some NDIS/Operating System functions are not supported in Windows 9x/Me and will prevent your driver from loading.  The System Information will report Code=2.  To determine the function that is causing this failure, load the debug version of VxDLDR.VxD to the Windows\\System\\Vmm32 folder.  It will emit debug spew to the kernel debug console with a message similar to $B!H(JPELDR: MyDriver.sys can$B!G(Jt find export <function> in module <ndis>.$B!I(J  You will have to find alternatives for any functions that are not supported.

---
NDIS VERSIONS
---

Be careful to properly match the NDIS version with the target operating system.  The NDIS version for each OS is as follows:

Windows 95: NDIS v 3.10
Windows 98 FE: NDIS v 5.0
Windows 98 SE: NDIS v 5.0
Windows ME: NDIS v 5.0
Windows 2000: NDIS 5.0
Windows XP: NDIS 5.1

Specify the required version number in your SOURCES file with an appropriate -DNDISxx declare.

Also remember to set the proper version number in structures that require versioning, like ProtocolCharacteristics.  Page faults will most likely occur if a higher version is passed in characteristic structures than that which is defined in the SOURCES file.

---
BINARY_COMPATIBLE/FUNCTIONS v MACROS
---

Always define BINARY_COMPATIBLE when building drivers for Windows 9x/Me.  Many NDIS functions are implemented as macros in Windows 2000 and XP.  See the declaration of NdisSend and NdisRequest, both as a macro declaration and as a function prototype.

Failure to do so will yield unpredictable results.  But most likely, a page fault will occur as your driver will jump to a random instruction in memory.

Behind the scenes, the BindingHandle that NidsOpenAdapter returns contains pointers directly to the miniport$B!G(Js handlers, bypassing intermediate calls into NDIS.  This is not supported in Windows 9x/ME.

---
STRINGS/ANSI v UNICODE
---

Functions that use strings, like NdisOpenAdapter and a protocol$B!G(Js BindAdapterHandler will use UNICODE strings in Windows 2000/XP and ANSI strings in Windows 9x/ME.  The DDK will always assume UNICODE strings, so actual manipulation of strings in 9x/Me will require special handling.

A protocol$B!G(Js BindAdapterHandler contains a pointer to the adapter$B!G(Js name, which it generally passes down to NdisOpenAdapter untouched.  This is acceptable in 9x/Me because the contents of the string is never manipulated.  However, in the NDISUIO XP DDK sample, the string is stored as UNICODE for later use.  In the 9x/ME version of NDISUIO, either the copied string must be converted and stored in UNICODE or the driver and corresponding console application must be modified to pass ANSI strings throughout.

---
IM DRIVERS/INF
---

Windows 2000/XP intermediate drivers (PASSTHRU/MUX) install using two .INF files, one for the miniport edge and one for the protocol edge.  The protocol edge installs as a Class=NetTrans.  The miniport edge either installs as a Class=Net (MUX) or as a Class=NetService (PASSTHRU).

Windows 98/ME Intermediate Drivers install using a single .INF file and both edges are stamped as Class=NetTrans.  The real class type of the miniport edge is declared in the special registry entry, $B!H(JHKR,,RealClass,,Net$B!I(J.

---
IM DRIVERS/INF/INSTALL PROBLEMS
---

The file NETLANE.INF in the Windows\\Inf folder has been used as a starting point for installing Windows 9x/ME intermediate drivers.  It installs ATMLANE.SYS, the ATM LAN Emulation driver.

Whereas the ATMLANE example installs cleanly, modifying this sample INF file doesn$B!G(Jt resolve other problems encountered in installing IM drivers in 9x/ME.  ATMLANE$B!G(Js upper and lower bindings are NDISATM and ATMLANE.  In both cases, there$B!G(Js only one binding partner (TCPIP exports NDISATM as its lower edge as well as Ndis3, Ndis4, Ndis5).

Your own driver

---
IM DRIVERS/FIREWALLS
---

Some third-party firewall products find miniports by walking through the HKLM\\Enum registry hive mining for Class=Net devices.  Because the miniport edge of IM drivers in Windows 98/ME is exposed as Class=NetTrans (see IM DRIVERS/INF, above), these firewalls will not notice your miniport.  This is a poor design by these developers and there is no known solution for this situation.

---
IM DRIVERS/WIN95
---

Windows 95 does not support NdisIMInitializeDeviceInstance, whuch is a critical function for the protocol edge to make its internal binding to the miniport edge of your driver.  Porting PASSTHRU to Windows 95, therefore, is not possible.

Protocol drivers and miniport drivers, on the other hand, is possible.
/**********************************************************
其实也就是分别做一个protocol和miniport driver.,也算是中间层吧
***********************************************************/

---
INF DIFFERENCES
---

Windows 2000/XP .INF files contain sections to install services, which include entries for Start, Group, ErrorControl and Type.  Services are not used in Windows 9x/ME.  Instead, DevLoader and DeviceVxDs entries must be created.

Sample Windows 2000/XP INF section:

   [Install.Service]
   AddService=MyDriver,,MYDRIVER_Service_Inst

   [MYDRIVER_Service_Inst]
   DisplayName = %MYDRIVER_Desc%
   ServiceType = 1 ;SERVICE_KERNEL_DRIVER
   StartType = 2 ;SERVICE_AUTO_START
   ErrorControl = 1 ;SERVICE_ERROR_NORMAL
   ServiceBinary = %12%\\packet.sys
   LoadOrderGroup = \"PNP_TDI\"
   AddReg = AddReg_MYDRIVER_Service_Inst
   Description = %MYDRIVER_Desc%

Sample Windows 9x/ME INF section:

   AddReg=MYDRIVER.AddReg

   [MYDRIVER.AddReg]
   HKR,,DevLoader,,\"*ndis,*ntkern\"
   HKR,,DeviceVxDs,,\"MYDRIVER.sys\"

Mine the Windows\\Inf folder for sample .INF files.  Also, review


---
DEBUGING/WIN98
---

The kernel debugger for Windows 98 and Windows 98 SE is contained in the Windows 98 DDK.  On the target system, copy the program WDEB98.EXE to the Windows\\System folder.  In that system$B!G(Js AUTOEXEC.BAT, add:

CD \\WINDOWS\\SYSTEM
WDEB98 /b /c:1 /r=9600 ..\\WIN.COM

/b will cause the system to break when VMM32 starts, this gives a good opportunity to load other symbols (NDIS) and set break points

/c and /r select the com port and its rate.

..\\WIN.COM causes Windows to be executed

On the debug console, run RTERM98.  In Settings|Options, be sure to set an appropriate symbol search path and communications setting.

When the debugger is at a break point (i.e., VMM32 breaks due to /b, above), use $B!F(J?$B!G(J for additional help.

Documentation can be found in the Windows 98 DDK in the Help folder.  Launch Other.Chm and expand Related Driver Documentation\\Windows 95 Documentation\\Programmer$B!G(Js Guide\\WDEB386 System Debugger (WDEB98/RTERM98 was known as WDEB386/RTERM386 in the 95 documentation).

---
DEBUGING/WINME
---

Obtain the Windows ME Debug Kit at http://www.microsoft.com/ddk/debugging.  Download the Microsoft Debugging Tools for Windows Me.  Copy the executable to the target machine, launch, and follow the on screen instructions.  Copy the binary RTERM.EXE to the debug console.

---
DEBUG BINARIES/SYMBOLS/WIN9X
---

The checked binaries for Windows 98 and Windows 98 SE can be found on the MSDN CD labeled $B!H(JWindows 98 Other Versions.$B!I(J

---
DEBUG BINARIES/SYMBOLS/WINME
---

Debug/checked NDIS binaries were not distributed.  They can be downloaded via Knowledgebase article Q241517.  Also view Knowledgebase article Q279356 for tips on using the debug version of NDIS.VxD.
/*************************************************
是不是说ndis的库也能找到debug版的?
*************************************************/
---
SYSTEM FILE PROTECTION (SFP)/WINME
---

Follow the instructions in Q279356 (NDIS Debugging Tips for Windows ME) carefully.  You must disable SFP before replacing any system files in Windows ME, including NDIS.VxD.  Either boot up in safe mode (use F5 when starting Windows) or boot off of a Windows ME startup disk.

Also be aware that anytime you exit Network Neighborhood properties, the original $B!H(Jfree$B!I(J version of NDIS.VxD may be re-installed.  The checked version will be over 300K.

---
NDIS_BUFFER
---

Never touch the elements of NDIS_BUFFER directly.  This structure is vastly different between Windows 98/ME and Windows 2000/XP (where it$B!G(Js a MDL).  Use the NDIS functions to access NDIS_BUFFER elements and treat that structure as completely opaque.  Use NdisQueryBuffer, for example, to obtain a pointer to the buffer$B!G(Js data.

---
RESOURCES
---

Q248413 [Win2K]
INFO: NDIS Debug Tracing and Kernel Debugger Extensions

Q266403 [Win2K]
HOWTO: Enable and Use NDIS Verifier

Q232515 [Win9x]
INFO: NDIS Level and Component Debugging Flags

Q279356 [WinME]
HOWTO: NDIS Debugging Tips for Windows ME

Q198582 [Win2K/Win9x/WinME]
INFO: NDIS Binary-Compatibility on Windows 98 and Windows 2K

Q224784 [Win2K/Win9x/WinME]
HOWTO: Writing WDM/NDIS Miniports for Windows

Q241517 [WinME]
SAMPLE: Ndis.exe Windows ME NDIS Debug Binaries

Q280063 [WinME]
DOC: MillinniumPreferred Directive Added to Net Class INF

Q282757 [WinME]
HOWTO: Use Network Setup Debug Extensions to NetDI for WinME

Q282778 [WinME]
INFO: Setting LowerRange for NDIS Protocol Drivers in WinME

Q285676 [WinME]
TCPIP Packets Discarded via Dial-up NDIS Intermed. Drivers

Q314986 [WinME]
Create NDIS Intermediate Drivers using NDIS Hooking Scheme

Visual C v 1.52c:
MSDN Platform Archive package, Disk 3, $B!H(J16-bit DDKs$B!I(J

Windows 98 and Windows 98 SE debug binaries and symbols:
[TODO] (disk location) $B!H(JWindows 98 Other Versions$B!I(J

/***********************End******************************/
不再回忆从前,我已经生活在幸福当中。
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-26 21:06
关于这一段我有一个特别基础性的问题,
1。即ndis的版本是靠那个软件支持的?
2。这软件的名字是?

---
NDIS VERSIONS
---

Be careful to properly match the NDIS version with the target operating system. The NDIS version for each OS is as follows:

Windows 95: NDIS v 3.10
Windows 98 FE: NDIS v 5.0
Windows 98 SE: NDIS v 5.0
Windows ME: NDIS v 5.0
Windows 2000: NDIS 5.0
Windows XP: NDIS 5.1

Specify the required version number in your SOURCES file with an appropriate -DNDISxx declare.

Also remember to set the proper version number in structures that require versioning, like ProtocolCharacteristics. Page faults will most likely occur if a higher version is passed in characteristic structures than that which is defined in the SOURCES file.

---
BINARY_COMPATIBLE/FUNCTIONS v MACROS
---

Always define BINARY_COMPATIBLE when building drivers for Windows 9x/Me. Many NDIS functions are implemented as macros in Windows 2000 and XP. See the declaration of NdisSend and NdisRequest, both as a macro declaration and as a function prototype.

Failure to do so will yield unpredictable results. But most likely, a page fault will occur as your driver will jump to a random instruction in memory.

Behind the scenes, the BindingHandle that NidsOpenAdapter returns contains pointers directly to the miniport$B!G(Js handlers, bypassing intermediate calls into NDIS. This is not supported in Windows 9x/ME.

按第一贴的“给分”键,给分。
fuq_dddd
驱动老牛
驱动老牛
  • 注册日期2002-10-15
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分331分
  • 威望57点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-17 14:51
将微软员工这段话中的乱码用上引号(英文)\'替换就对了。
星星之火 可以燎原 每一个光亮 都可能是黎明 [img]http://joke.tom.com/img/assets/1/gaoxiao_80_910.gif[/img]
游客

返回顶部