Converted servprov.h to IDL.

diff --git a/include/Makefile.in b/include/Makefile.in
index 2ea2f23..cbccbb5 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -9,6 +9,7 @@
 	oaidl.idl \
 	objidl.idl \
 	oleidl.idl \
+	servprov.idl \
 	strmif.idl \
 	unknwn.idl \
 	wtypes.idl
@@ -145,7 +146,6 @@
 	rpcndr.h \
 	rpcnterr.h \
 	rpcproxy.h \
-	servprov.h \
 	setupapi.h \
 	shellapi.h \
 	shlguid.h \
diff --git a/include/servprov.h b/include/servprov.h
index 2ccfe35..ecb39d5 100644
--- a/include/servprov.h
+++ b/include/servprov.h
@@ -1,60 +1,107 @@
-/*
- * Copyright (C) 1999 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
+/*** Autogenerated by WIDL 0.1 from servprov.idl - Do not edit ***/
 #include <rpc.h>
 #include <rpcndr.h>
-#ifndef COM_NO_WINDOWS_H
-#include <windows.h>
-#include <ole2.h>
+
+#ifndef __WIDL_SERVPROV_H
+#define __WIDL_SERVPROV_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <objidl.h>
+#ifndef __IServiceProvider_FWD_DEFINED__
+#define __IServiceProvider_FWD_DEFINED__
+typedef struct IServiceProvider IServiceProvider;
 #endif
 
-#ifndef __WINE_SERVPROV_H
-#define __WINE_SERVPROV_H
-
-
-#include <objbase.h>
-
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID   (IID_IServiceProvider,	0x6d5140c1L, 0x7436, 0x11ce, 0x80, 0x34, 0x00, 0xaa, 0x00, 0x60, 0x09, 0xfa);
-typedef struct IServiceProvider IServiceProvider,*LPSERVICEPROVIDER;
-
+typedef IServiceProvider *LPSERVICEPROVIDER;
 
 /*****************************************************************************
  * IServiceProvider interface
  */
-#define INTERFACE IServiceProvider
-#define IServiceProvider_METHODS \
-    IUnknown_METHODS \
-    STDMETHOD(QueryService)(THIS_ REFGUID guidService, REFIID riid, void **ppvObject) PURE;
-ICOM_DEFINE(IServiceProvider,IUnknown)
-#undef INTERFACE
+#ifndef __IServiceProvider_INTERFACE_DEFINED__
+#define __IServiceProvider_INTERFACE_DEFINED__
 
-#ifdef COBJMACROS
+DEFINE_GUID(IID_IServiceProvider, 0x6d5140c1, 0x7436, 0x11ce, 0x80,0x34, 0x00,0xaa,0x00,0x60,0x09,0xfa);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IServiceProvider : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryService(
+        REFGUID guidService,
+        REFIID riid,
+        void** ppvObject) = 0;
+
+};
+#else
+typedef struct IServiceProviderVtbl IServiceProviderVtbl;
+struct IServiceProvider {
+    const IServiceProviderVtbl* lpVtbl;
+};
+struct IServiceProviderVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IServiceProvider* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IServiceProvider* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IServiceProvider* This);
+
+    /*** IServiceProvider methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryService)(
+        IServiceProvider* This,
+        REFGUID guidService,
+        REFIID riid,
+        void** ppvObject);
+
+};
+
 /*** IUnknown methods ***/
 #define IServiceProvider_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IServiceProvider_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IServiceProvider_Release(p)            (p)->lpVtbl->Release(p)
+#define IServiceProvider_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IServiceProvider_Release(p) (p)->lpVtbl->Release(p)
 /*** IServiceProvider methods ***/
 #define IServiceProvider_QueryService(p,a,b,c) (p)->lpVtbl->QueryService(p,a,b,c)
+
 #endif
 
+#define IServiceProvider_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IServiceProvider methods ***/ \
+    STDMETHOD_(HRESULT,QueryService)(THIS_ REFGUID guidService, REFIID riid, void** ppvObject) PURE;
 
-#endif /* __WINE_SERVPROV_H */
+HRESULT CALLBACK IServiceProvider_RemoteQueryService_Proxy(
+    IServiceProvider* This,
+    REFGUID guidService,
+    REFIID riid,
+    IUnknown** ppvObject);
+void __RPC_STUB IServiceProvider_RemoteQueryService_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IServiceProvider_QueryService_Proxy(
+    IServiceProvider* This,
+    REFGUID guidService,
+    REFIID riid,
+    void** ppvObject);
+HRESULT __RPC_STUB IServiceProvider_QueryService_Stub(
+    IServiceProvider* This,
+    REFGUID guidService,
+    REFIID riid,
+    IUnknown** ppvObject);
+
+#endif  /* __IServiceProvider_INTERFACE_DEFINED__ */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __WIDL_SERVPROV_H */
diff --git a/include/servprov.idl b/include/servprov.idl
new file mode 100644
index 0000000..32b2324
--- /dev/null
+++ b/include/servprov.idl
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 1999 Francois Gouget
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+import "objidl.idl";
+
+
+/*****************************************************************************
+ * IServiceProvider interface
+ */
+[
+    object,
+    uuid(6d5140c1-7436-11ce-8034-00aa006009fa),
+    pointer_default(unique)
+]
+interface IServiceProvider : IUnknown
+{
+    typedef [unique] IServiceProvider *LPSERVICEPROVIDER;
+
+    [local]
+    HRESULT QueryService(
+        [in] REFGUID guidService,
+        [in] REFIID riid,
+        [out] void ** ppvObject);
+
+    [call_as(QueryService)]
+    HRESULT RemoteQueryService(
+        [in] REFGUID guidService,
+        [in] REFIID riid,
+        [out, iid_is(riid)] IUnknown ** ppvObject);
+}