Jump to content

DosPortAccess

From EDM2
Revision as of 05:20, 26 January 2020 by Ak120 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This call requests or releases access to ports for I/O privilege.

Syntax

DosPortAccess (Reserved, TypeOfAccess, FirstPort, LastPort)

Parameters

Reserved (USHORT) - input
Must be set to zero.
TypeOfAccess (USHORT) - input
A request for or release of access to a port.
0 - Request access
1 - Release access.
FirstPort (USHORT) - input
Starting (low) number in a contiguous range or a single port.
LastPort (USHORT) - input
Ending (high) number in a contiguous range or a single port. If only one port is being used, FirstPort and LastPort should both be set to this port.

Return Code

rc (USHORT) - return
Return code descriptions are:
  • 0 NO_ERROR
  • 5 ERROR_ACCESS_DENIED

Remarks

Note that CLI/STI privilege is also granted automatically. There is no need to make an additional call to DosCLIAccess.

Applications that perform I/O to port(s) in IOPL segments must request port access from the operating system.

An application with no IOPL segments that accesses a device through a device driver or by an interface package such as VIO, does not need to issue this call. The device driver or interface package is responsible for obtaining the necessary I/O access.

Bindings

C

#define INCL_DOSDEVICES

USHORT  rc = DosPortAccess(Reserved, TypeOfAccess, FirstPort, LastPort);

USHORT  0;             /* 0 */
USHORT  TypeOfAccess;  /* Request or release */
USHORT  FirstPort;     /* First port number */
USHORT  LastPort;      /* Last port number */

USHORT  rc;            /* return code */

MASM

EXTRN  DosPortAccess:FAR
INCL_DOSDEVICES     EQU 1

PUSH   WORD    0             ;Reserved (must be zero)
PUSH   WORD    TypeOfAccess  ;Request or release
PUSH   WORD    FirstPort     ;First port number
PUSH   WORD    LastPort      ;Last port number
CALL   DosPortAccess

Returns WORD