windows-nt/Source/XPSP1/NT/multimedia/media/samples/mcipionr/ntcomm.c

85 lines
1.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/****************************************************************************
*
* ntcomm.c
*
* Copyright (c) 1993 Microsoft Corporation. All Rights Reserved
*
* MCI Device Driver for the Pioneer 4200 Videodisc Player
*
* Comms compatibility routines for Windows NT
*
***************************************************************************/
#include <windows.h>
INT OpenComm(LPCTSTR lpstr, UINT wqin, UINT wqout)
{
HANDLE hFile;
COMMTIMEOUTS Timeouts;
hFile = CreateFile(lpstr,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_WRITE_THROUGH,
0);
if (hFile == INVALID_HANDLE_VALUE) {
return 0;
}
/*
* Set the timeouts to be like win3.1 (as defined in the SDK)
*/
Timeouts.ReadIntervalTimeout = INFINITE;
Timeouts.ReadTotalTimeoutMultiplier = 0;
Timeouts.ReadTotalTimeoutConstant = 0;
Timeouts.WriteTotalTimeoutMultiplier = INFINITE;
Timeouts.WriteTotalTimeoutConstant = INFINITE;
if (!SetCommTimeouts(hFile, &Timeouts)) {
CloseHandle(hFile);
return 0;
} else {
return (INT)hFile;
}
}
INT GetCommError(int hDevice, LPCOMSTAT lpComStat)
{
DWORD dwErrors;
if (ClearCommError((HANDLE)hDevice, &dwErrors, lpComStat)) {
return dwErrors;
} else {
/*
* Concoct something nasty
*/
return CE_IOE;
}
}
INT ReadComm(HFILE nCid, LPSTR lpBuf, INT nSize)
{
DWORD cbRead;
if (!ReadFile((HANDLE)nCid, lpBuf, nSize, &cbRead, 0))
return(-(INT)cbRead);
return((INT)cbRead);
}
INT WriteComm(HFILE nCid, LPSTR lpBuf, INT nSize)
{
DWORD cbWritten;
if (!WriteFile((HANDLE)nCid, lpBuf, nSize, &cbWritten, 0))
return(-(INT)cbWritten);
return((INT)cbWritten);
}