int efa_open_device()

in efawin/efawinif.c [36:70]


int efa_open_device(struct EFA_WIN_DEVICE* device)
{
    LPCWSTR deviceName = EFA_DEVICE_NAME;
    if (NULL != device)
    {
        DWORD errNum;
        //
        // Open the device
        //
        HANDLE hDevice = CreateFile(deviceName,
            GENERIC_READ | GENERIC_WRITE,
            0,
            NULL,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL,
            NULL);

        if (hDevice == INVALID_HANDLE_VALUE) {

            errNum = GetLastError();

            if (!(errNum == ERROR_FILE_NOT_FOUND ||
                errNum == ERROR_PATH_NOT_FOUND)) {
                return errNum;
            }
        }
        else
        {
            device->Device = hDevice;
            device->PageSize = PAGE_SIZE;
            return EFA_SUCCESS;
        }
    }
    return ERROR_DEVICE_HARDWARE_ERROR;
}