亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? geek hideout -- io_dll.htm

?? printio.h 很好用的printport 源碼 趕快用八
?? HTM
?? 第 1 頁 / 共 3 頁
字號(hào):
                  80x86 assembly programming just because they want to turn on a 
                  lamp from their computer. However, the unwillingness to learn 
                  assembly language becomes rather trivial when faced with 9x's 
                  big brother. 
                  <P>Windows NT/2000/XP, being the secure operating system that 
                  it is, does not permit port I/O operations at the application 
                  level at all. Period. A program with inline IN and OUT 
                  assembly instructions that runs perfectly on Windows 95/98 
                  will fail horribly when it comes to Windows NT/2000/XP. 
                  <P>Windows NT/2000/XP does, however, allow I/O instructions in 
                  its kernel mode drivers. A kernel mode driver runs at the most 
                  priviledged level of the processor and can do whatever it 
                  pleases, including screwing up the system beyond repair, thus 
                  writing a kernel mode driver is not for the feint of heart. 
                  <P>If you were to take it upon yourself to wade through the 
                  documentation of the Windows NT/2000/XP ddk and piece together 
                  a driver that was callable by your application to do the I/O 
                  instructions on behalf of your application, you'd probably 
                  notice something not too pleasant--this sort of access is 
                  painfully slow. The call from application level to system 
                  level typically takes about one millisecond. Compare this to 
                  the one microsecond that a normal I/O access takes. To further 
                  the insult, you are at the whim of the operating system. If it 
                  has tasks which it believes are of higher priority than your 
                  lowly call to your driver, it will perform them, making 
                  precise timing nearly impossible. 
                  <P>Obviously, writing a driver that does acts a proxy for the 
                  I/O calls isn't the most ideal solution. There is, however, a 
                  solution for NT/2000/XP that allows the same convienience of 
                  inline assembly language that 95/98 does. 
                  <P>As mentioned, a kernel mode driver can do whatever it 
                  wants. The implication here is that if another kernel mode 
                  driver shut off application access to the I/O ports, it should 
                  be possible for another kernel mode driver to turn it back on. 
                  This is where IO.DLL enters the picture. 
                  <P>
                  <H4>Licensing</H4>IO.DLL is completely free! However, you may 
                  not: 
                  <UL>
                    <LI>Charge others for it in any way. For example, you cannot 
                    sell it as a stand alone product. 
                    <LI>Charge for an IO.DLL wrapper, such as an OCX or Delphi 
                    control whose purpose is just to put a fancy interface on 
                    IO.DLL. I consider these to be "derived works" and they must 
                    be provided free of charge. 
                    <LI>Claim that it is your property. </LI></UL>Also, the author 
                  (that's me) cannot be held liable due to io.dll's failure to 
                  perform. As with most free stuff, you are on your own.
                  <P>
                  <P>
                  <H4>Source Code and Special Modifications</H4>The source code 
                  is available for $1,000 US.
                  <P>I'm willing to work with people should they require a 
                  special modification to IO.DLL. For example, you might have a 
                  strict timing requirement of some sort that can only be done 
                  in kernel mode. For a fee, I will modify IO.DLL and/or the 
                  embedded kernel mode driver for the task at hand. 
                  <P>
                  <H4>Description of IO.DLL</H4>
                  <P>IO.DLL provides a useful set of commands for reading and 
                  writing to the I/O ports. These commands are consistent 
                  between 95/98 and NT/2000/XP. Furthermore, there is no need 
                  for the programmer to learn assembly language or muck with 
                  kernel mode drivers. Simply link to the DLL and call the 
                  functions. It's that easy. 
                  <P>Windows NT/2000/XP is accomodated through the use of a 
                  small kernel mode driver that releases the ports as needed to 
                  the application. This driver is embedded in the DLL and is 
                  installed if Windows NT/2000/XP is determined to be the 
                  underlying operating system. 
                  <P>Due to the very minor overhead involved in dynamically 
                  linking to IO.DLL, and the optimized functions contained 
                  within, access to I/O ports is nearly as fast as if it was 
                  written in raw assembler and inlined in your application. This 
                  holds true for both Windows 95/98 and Windows NT/2000/XP. 
                  <P>Before moving on, it is probably prudent to mention that 
                  the technique employed in IO.DLL for releasing the ports to 
                  the application level isn't, strictly speaking, the proper way 
                  to do things. The proper way is to have a virtual device 
                  driver for Windows 95/98 and a kernel mode driver for Windows 
                  NT/2000/XP. This isn't very practical for many people though, 
                  nor is it really necessary. There are several successful 
                  commercial products on the market that do exactly what IO.DLL 
                  does. Let it be noted though that some of them are shady with 
                  their explanation of how their product works, meanwhile 
                  charging $500 or more for it. 
                  <P>
                  <H4>Download</H4>
                  <P><A 
                  href="http://www.geekhideout.com/downloads/io.zip">io.zip</A> 
                  46k (Contains all the files) <BR><A 
                  href="http://www.geekhideout.com/downloads/io.dll">io.dll</A> 
                  46k 
                  <P>The following two files are for C++ users. There is more 
                  info on these in the prototypes section.<BR>
                  <P><A 
                  href="http://www.geekhideout.com/downloads/io.cpp">io.cpp</A> 
                  1k <BR><A 
                  href="http://www.geekhideout.com/downloads/io.h">io.h</A> 1k 
                  <H4>C/C++ Prototypes</H4><PRE>void WINAPI PortOut(short int Port, char Data);
void WINAPI PortWordOut(short int Port, short int Data);
void WINAPI PortDWordOut(short int Port, int Data);
char WINAPI PortIn(short int Port);
short int WINAPI PortWordIn(short int Port);
int WINAPI PortDWordIn(short int Port);
void WINAPI SetPortBit(short int Port, char Bit);
void WINAPI ClrPortBit(short int Port, char Bit);
void WINAPI NotPortBit(short int Port, char Bit);
short int WINAPI GetPortBit(short int Port, char Bit);
short int WINAPI RightPortShift(short int Port, short int Val);
short int WINAPI LeftPortShift(short int Port, short int Val);
short int WINAPI IsDriverInstalled();
</PRE>To use IO.DLL with Visual C++/ Borland C++, etc, you'll 
                  need to use LoadLibrary and GetProcAddress. Yes, it's more of 
                  a pain than using a .lib file, but because of name mangling, 
                  it's the only reliable way of calling the functions in IO.DLL. 
                  I've gone ahead and done the dirty work for you:
                  <P><A 
                  href="http://www.geekhideout.com/downloads/io.cpp">io.cpp</A><BR><A 
                  href="http://www.geekhideout.com/downloads/io.h">io.h</A>
                  <P>Just save these two files and include them in your project. 
                  For a Visual C++, you may need to add #include "StdAfx.h" at 
                  the top of io.cpp otherwise the compiler will whine at you.
                  <P>These two files take care of calling LoadLibrary and all 
                  the neccessary calls to GetProcAddress, making your life happy 
                  once again.
                  <P>The only step you are required to do is call 
                  <B>LoadIODLL</B> somewhere at the beginning of your program. 
                  Make sure you do this or you will find yourself faced with all 
                  sorts of interesting crashes.
                  <P>Please let me know if you find any errors in the above two 
                  files. They are new and haven't been tested all that much.
                  <P>
                  <H4>Delphi Prototypes</H4><PRE>procedure PortOut(Port : Word; Data : Byte);
procedure PortWordOut(Port : Word; Data : Word);
procedure PortDWordOut(Port : Word; Data : DWord);
function PortIn(Port : Word) : Byte;
function PortWordIn(Port : Word) : Word;
function PortDWordIn(Port : Word) : DWord;
procedure SetPortBit(Port : Word; Bit : Byte);
procedure ClrPortBit(Port : Word; Bit : Byte);
procedure NotPortBit(Port : Word; Bit : Byte);
function GetPortBit(Port : Word; Bit : Byte) : WordBool;
function RightPortShift(Port : Word; Val : WordBool) : WordBool;
function LeftPortShift(Port : Word; Val : WordBool) : WordBool; 
function IsDriverInstalled : Boolean;
</PRE><B>Important!</B> To use these functions in your Delphi 
                  program, the correct calling convention of stdcall is 
                  required. For example:
                  <P><PRE>procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';
</PRE>
                  <H4>Visual Basic Prototypes</H4><FONT 
                  face="courier new, courier, times" size=-1>Private Declare Sub 
                  PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As 
                  Byte)<BR>Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal 
                  Port As Integer, ByVal Data As Integer)<BR>Private Declare Sub 
                  PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data 
                  As Long)<BR>Private Declare Function PortIn Lib "IO.DLL" 
                  (ByVal Port As Integer) As Byte<BR>Private Declare Function 
                  PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As 
                  Integer<BR>Private Declare Function PortDWordIn Lib "IO.DLL" 
                  (ByVal Port As Integer) As Long<BR>Private Declare Sub 
                  SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As 
                  Byte)<BR>Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal 
                  Port As Integer, ByVal Bit As Byte)<BR>Private Declare Sub 
                  NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As 
                  Byte)<BR>Private Declare Function GetPortBit Lib "IO.DLL" 
                  (ByVal Port As Integer, ByVal Bit As Byte) As 
                  Boolean<BR>Private Declare Function RightPortShift Lib 
                  "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As 
                  Boolean<BR>Private Declare Function LeftPortShift Lib "IO.DLL" 
                  (ByVal Port As Integer, ByVal Val As Boolean) As 
                  Boolean<BR>Private Declare Function IsDriverInstalled Lib 
                  "IO.DLL" As Boolean<BR></FONT>
                  <H4>Function Descriptions</H4>Please refer to the prototype 
                  for the particular language you are using. 
                  <P><B>PortOut</B><BR>Outputs a byte to the specified port.
                  <P><B>PortWordOut</B><BR>Outputs a word (16-bits) to the 
                  specified port.
                  <P><B>PortDWordOut</B><BR>Outputs a double word (32-bits) to 
                  the specified port.
                  <P><B>PortIn</B><BR>Reads a byte from the specified port.
                  <P><B>PortWordIn</B><BR>Reads a word (16-bits) from the 
                  specified port.
                  <P><B>PortDWordIn</B><BR>Reads a double word (32-bits) from 
                  the specified port.
                  <P><B>SetPortBit</B><BR>Sets the bit of the specified port.
                  <P><B>ClrPortBit</B><BR>Clears the bit of the specified port.
                  <P><B>NotPortBit</B><BR>Nots (inverts) the bit of the 
                  specified port.
                  <P><B>GetPortBit</B><BR>Returns the state of the specified 
bit.
                  <P><B>RightPortShift</B><BR>Shifts the specified port to the 
                  right. The LSB is returned, and the value passed becomes the 
                  MSB.
                  <P><B>LeftPortShift</B><BR>Shifts the specified port to the 
                  left. The MSB is returned, and the value passed becomes the 
                  LSB.
                  <P><B>IsDriverInstalled</B><BR>Returns non-zero if io.dll is 
                  installed and functioning. The primary purpose of this 
                  function is to ensure that the kernel mode driver for 
                  NT/2000/XP has been installed and is accessible.
                  <P>
                  <H4>Other Information</H4>An excellent document about the 
                  standard parallel port can be found <A 
                  href="http://www.timgoldstein.com/CNC/ParallelPortPrimer.htm">here</A>. 
                </TD></TR></TBODY></TABLE><!-- end actual content --></TD>
          <TD width=11 
            background="Geek Hideout -- IO_DLL.files/ver-rt.gif"><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/ver-rt.gif" width=11></TD>
        <TR>
          <TD width=11><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/ll.gif" width=11></TD>
          <TD align=right width="100%" 
          background="Geek Hideout -- IO_DLL.files/hor-bt.gif"><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/bt.gif" width=11></TD>
          <TD width=11><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/lr.gif" 
      width=11></TD></TR></TBODY></TABLE><!-- end content --><!-- begin footer table -->
      <TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#1285c2 
        border=0><TBODY>
        <TR>
          <TD width=11><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/ul.gif" width=11></TD>
          <TD align=right width="100%" 
          background="Geek Hideout -- IO_DLL.files/hor-tp.gif"><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/tt.gif" width=11></TD>
          <TD width=11><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/ur.gif" width=11></TD></TR>
        <TR>
          <TD background="Geek Hideout -- IO_DLL.files/ver-lt.gif"><IMG 
            height=11 src="Geek Hideout -- IO_DLL.files/ver-lt.gif" width=11></TD>
          <TD>
            <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
              <TBODY>
              <TR>
                <TD class=menu vAlign=top>&copy; Copyright 2000-2003 Geek 
                  Hideout<BR>System load: 2.39, 1.12, 0.47 | Current Visitors: 3 
                </TD>
                <TD class=menu 
                  align=right>http://www.geekhideout.com/iodll.shtml<BR>Last 
                  modified on July 11, 2003</TD></TR></TBODY></TABLE></TD>
          <TD background="Geek Hideout -- IO_DLL.files/ver-rt.gif"><IMG 
            height=11 src="Geek Hideout -- IO_DLL.files/ver-rt.gif" width=11></TD>
        <TR>
          <TD width=11><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/ll.gif" width=11></TD>
          <TD align=right width="100%" 
          background="Geek Hideout -- IO_DLL.files/hor-bt.gif"><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/hor-bt.gif" width=11></TD>
          <TD width=11><IMG height=11 
            src="Geek Hideout -- IO_DLL.files/lr.gif" 
      width=11></TD></TR></TBODY></TABLE><!-- end footer table --></TD></TR></TBODY></TABLE><!-- end outer table --></BODY></HTML>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
5566中文字幕一区二区电影| 在线观看一区二区视频| 国产日韩欧美精品电影三级在线| eeuss影院一区二区三区| 亚洲高清久久久| 国产亚洲欧洲一区高清在线观看| 欧美三级乱人伦电影| 床上的激情91.| 老色鬼精品视频在线观看播放| 最新日韩在线视频| 久久久久久9999| 欧美一级生活片| 欧美在线观看视频一区二区三区| 国产精品1024| 国产剧情一区在线| 免费看日韩精品| 亚洲国产精品一区二区尤物区| 国产精品久久久久久久久晋中 | 极品少妇一区二区三区精品视频 | 国产精品护士白丝一区av| 欧美tickling网站挠脚心| 精品视频在线免费看| 9l国产精品久久久久麻豆| 国产精品1024| 国产精品一区一区三区| 久久av老司机精品网站导航| 午夜精品在线看| 亚洲一区二区三区四区不卡| 中文字幕在线一区二区三区| 国产精品乱码人人做人人爱 | 亚洲欧美日本在线| 中文字幕中文字幕在线一区| 国产日韩影视精品| 国产日本一区二区| 久久美女艺术照精彩视频福利播放| 欧美一区二区女人| 欧美精品xxxxbbbb| 欧美日本在线一区| 欧美电影一区二区| 3atv一区二区三区| 欧美一二三四区在线| 日韩一区二区精品葵司在线| 91精品国产色综合久久不卡蜜臀| 欧美男男青年gay1069videost| 欧美日韩精品福利| 91麻豆精品国产91| 欧美成人video| 精品va天堂亚洲国产| 久久久午夜精品| 欧美激情一区二区三区全黄| 亚洲国产精品t66y| 亚洲品质自拍视频| 国产欧美一区二区精品性色| 欧美一区二区视频在线观看2022 | 91亚洲永久精品| 色综合视频在线观看| 91搞黄在线观看| 51精品秘密在线观看| 精品久久五月天| 国产精品理论片在线观看| 国产精品第一页第二页第三页| 亚洲猫色日本管| 丝袜亚洲精品中文字幕一区| 久久国产精品99久久久久久老狼 | 日韩毛片一二三区| 亚洲成人免费看| 精品亚洲成a人在线观看| 国产麻豆成人精品| 91性感美女视频| 欧美高清激情brazzers| 2020日本不卡一区二区视频| 国产精品福利一区| 亚洲图片欧美色图| 国产精品自在欧美一区| 色综合婷婷久久| 欧美一区二区三区免费| 国产精品美女www爽爽爽| 亚洲va韩国va欧美va精品| 国产一区二区在线看| 色综合久久综合网97色综合 | 欧美一级精品大片| 欧美高清在线精品一区| 亚欧色一区w666天堂| 国产福利不卡视频| 欧美群妇大交群的观看方式| 久久久99久久| 五月激情六月综合| 不卡欧美aaaaa| 欧美一区二区三区人| 中文字幕亚洲一区二区av在线 | 亚洲婷婷在线视频| 免费日韩伦理电影| 色八戒一区二区三区| 26uuu色噜噜精品一区二区| 亚洲精品日韩一| 国产成人精品综合在线观看 | 91尤物视频在线观看| 日韩欧美一区二区三区在线| 亚洲视频小说图片| 国产伦精品一区二区三区视频青涩 | 亚洲午夜在线视频| 国产91丝袜在线观看| 91精品国产综合久久精品图片| 国产精品传媒视频| 国产一区二区毛片| 欧美一个色资源| 亚洲成人免费在线观看| 97国产一区二区| 久久夜色精品国产噜噜av| 日日摸夜夜添夜夜添亚洲女人| 97久久精品人人澡人人爽| 国产视频911| 精品在线一区二区三区| 欧美精品在线观看一区二区| 中文字幕一区在线观看视频| 国产一本一道久久香蕉| 日韩一区二区三免费高清| 亚洲一区二区三区中文字幕| 成人av影院在线| 久久久久久97三级| 国产一区二区福利| 91精选在线观看| 五月婷婷综合激情| 欧美日韩一区二区三区视频| 伊人夜夜躁av伊人久久| 99精品久久久久久| 亚洲婷婷综合色高清在线| 不卡一区中文字幕| 国产精品美女久久久久久久久 | 日本久久一区二区| 亚洲免费观看视频| 91久久精品国产91性色tv| 1024国产精品| av成人免费在线| 亚洲视频免费在线观看| 91在线观看免费视频| 18成人在线视频| 日本久久电影网| 亚洲成va人在线观看| 欧美日韩成人在线一区| 日韩精品电影一区亚洲| 欧美一区二区在线免费播放| 日日夜夜一区二区| 欧美大胆一级视频| 国产精品99久久久久久久女警| 国产色综合久久| 99久久精品情趣| 亚洲国产sm捆绑调教视频| 3d成人动漫网站| 国产乱色国产精品免费视频| 国产欧美一区二区精品性| 99riav久久精品riav| 亚洲综合成人在线视频| 欧美久久久久久蜜桃| 精品一区二区三区在线观看| 国产片一区二区三区| 波多野结衣欧美| 一区二区不卡在线视频 午夜欧美不卡在 | 91精品国产手机| 国产精品影视在线观看| 国产精品久线观看视频| 欧美日韩在线综合| 国产在线精品一区二区三区不卡 | 国产亚洲欧美日韩日本| 99国产精品一区| 日日欢夜夜爽一区| 精品免费日韩av| av在线一区二区| 日韩不卡一二三区| 国产人妖乱国产精品人妖| 欧美中文字幕一区| 国产精品自拍网站| 亚洲精品成人a在线观看| 日韩午夜激情av| 不卡一区二区中文字幕| 日本最新不卡在线| 国产精品国产三级国产a| 8x8x8国产精品| 99视频国产精品| 精品在线一区二区三区| 亚洲激情在线激情| 久久久综合激的五月天| 欧美性一级生活| 成人午夜在线免费| 日本中文字幕一区二区视频 | www精品美女久久久tv| 91免费观看视频在线| 六月丁香婷婷久久| 一区二区三区精品| 国产日韩欧美精品电影三级在线| 欧美日韩国产一区二区三区地区| 国产高清在线观看免费不卡| 亚洲一区二区在线观看视频| 国产女人水真多18毛片18精品视频 | 久久精品一区二区三区不卡牛牛 | 成人av在线播放网址| 久久超碰97中文字幕| 一二三四区精品视频| 中文字幕欧美激情一区| 91精品国产品国语在线不卡|