/*
 * DirectX GUID definitions
 *
 * Copyright 2000 Alexandre Julliard
 * Copyright 2000 Francois Gouget
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <stdarg.h>

#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"

#include "objbase.h"
#include "oleauto.h"
#include "olectl.h"
#include "initguid.h"

#include "d3d.h"
#include "ddraw.h"
#include "mmsystem.h"
#include "dsound.h"
#include "dsconf.h"
#include "dmusics.h"
#include "dplay.h"
#include "dplay8.h"
#include "dplobby.h"
#include "dplobby8.h"
#include "dinput.h"
#include "ddrawi.h"
#include "dxdiag.h"
#include "dxfile.h"
#include "rmxfguid.h"
