Slashdot Mirror


Parallel Port I/O Access Under Win2K?

stumped-by-MS asks: "I'm having a tough time accessing my parallel port under Win 2K. I'm working off of a Dell Precision P4 workstation, and using Microsoft ASseMbler to run simple programs involving IN and OUT commands. Initially I read about 2K's strict I/O control, and found the PortTalk driver to get around it. This driver, when coupled with the supplied allowio.exe, is supposed to give any program User level 0 to any specified port. Using the program (syntax: allowio test.exe 0x378 ) allows access to the base address just fine, however with base+1 (0x379), the input port, is still unresponsive. Using allowio to specifically give access to that port also fails, as well as giving my program access to all ports, which I would rather not do in the first place. " Is there some hidden set of permissions a program must have before they are allowed access to certain I/O ports under Windows 2000?

"Am I missing some concept here? As I understand it, allowing access to base=0378H should give access beyond 0x380! If anyone knows what I am doing wrong, or the location of some software that does things right, it would help me a lot."

2 of 10 comments (clear)

  1. DLPortIO by discoinferno · · Score: 4, Informative

    Do a search for DLPortIO. (http://www.driverlinx.com)

    It has all the answers to your question, and you would have run across it had you really done a search.

    --
    - It's anarchy baby. Suck it up.
  2. Hardware access is restricted. by eric2hill · · Score: 4, Informative

    On a Windows 2K/XP box, all hardware-level access is prohibited for user-space programs. Drivers are the only thing that are allowed to talk to hardware.

    Go pick up a generic driver that you communicate with to do what you want. See the following...

    http://www.torry.net/portaccess.htm

    There are many components available for Delphi (with source) to talk to hardware. Port to [insert language here] as necessary. Just remember to use standard calling conventions when calling the DLL.

    --
    LOAD "SIG",8,1
    LOADING...
    READY.
    RUN