Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/****************************************************************************
* * 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); }
|