Exemplo n.º 1
0
/**
  Reads a 16-bit I/O port.

  Reads the 16-bit I/O port specified by Port. The 16-bit read value is returned.
  This function must guarantee that all I/O read and write operations are
  serialized.

  If 16-bit I/O port operations are not supported, then ASSERT().
  If Port is not aligned on a 16-bit boundary, then ASSERT().

  @param  Port  The I/O port to read.

  @return The value read.

**/
UINT16
EFIAPI
IoRead16 (
  IN      UINTN                     Port
  )
{
  UINT16                            Value;

  ASSERT ((Port & 1) == 0);
  _ReadWriteBarrier ();
  Value = _inpw ((UINT16)Port);
  _ReadWriteBarrier ();
  return Value;
}
Exemplo n.º 2
0
bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize)
{
  tagPort32Struct Port32Struct;
  DWORD dwBytesReturned;
  
  if (!IsWinIoInitialized)
    return false;

  if (IsNT)
  {
    switch (bSize)
    {
      case 1:

        *pdwPortVal = _inp(wPortAddr);

      break;

      case 2:

        *pdwPortVal = _inpw(wPortAddr);

      break;

      case 4:

        *pdwPortVal = _inpd(wPortAddr);

      break;
    }
  }
  else
  {
   Port32Struct.bSize = bSize;
   Port32Struct.wPortAddr = wPortAddr;
   
   return DeviceIoControl(hDriver, WINIO_READPORT, &Port32Struct, sizeof(Port32Struct),
                          pdwPortVal, sizeof(DWORD), &dwBytesReturned, NULL);
  }

  return true;
}
Exemplo n.º 3
0
WORD pci_read_word(WORD bus, WORD dev, WORD func, BYTE offset )
{
  WORD target = func + ((dev & 0x1F) << 3) + ((bus & 0xFF) << 8) ;
  _outpd( 0xCF8, (DWORD)( target << 8 ) | 0x80000000UL | ((DWORD)offset & ~3 ) );
  return (WORD)_inpw( 0xCFC  + (offset & 0x2) ); 
}
Exemplo n.º 4
0
ushort InPortWord(ushort port)
{
	return _inpw(port);
}
Exemplo n.º 5
0
unsigned short MSVCRT__inpw(
   unsigned short port)
{
    return _inpw(port);
}