{{page>en:templates:fapiint}}
====== DosPortAccess ======
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
{{page>en:templates:fapi}}