[PATCH v2] qdvd: add stub dll

Vijay Kiran Kamuju infyquest at gmail.com
Fri Apr 10 10:58:42 CDT 2020


On Fri, Apr 10, 2020 at 5:46 PM Zebediah Figura <zfigura at codeweavers.com> wrote:
>
> On 4/10/20 10:01 AM, Vijay Kiran Kamuju wrote:
> > From f9c6605f27f0c12d530b26b558e3d9a59c598028 Mon Sep 17 00:00:00 2001
> > From: Vijay Kiran Kamuju <infyquest at gmail.com>
> > Date: Fri, 10 Apr 2020 16:08:57 +0200
> > Subject: [PATCH v2] qdvd: add stub dll
> >
> > based on patch from Austin English
> >
> > Signed-off-by: Vijay Kiran Kamuju <infyquest at gmail.com>
> > ---
> >  configure             |  2 ++
> >  configure.ac          |  1 +
> >  dlls/qdvd/Makefile.in |  6 ++++
> >  dlls/qdvd/qdvd.spec   |  4 +++
> >  dlls/qdvd/qdvd_main.c | 65 +++++++++++++++++++++++++++++++++++++++++++
> >  5 files changed, 78 insertions(+)
> >  create mode 100644 dlls/qdvd/Makefile.in
> >  create mode 100644 dlls/qdvd/qdvd.spec
> >  create mode 100644 dlls/qdvd/qdvd_main.c
> >
> > diff --git a/configure b/configure
> > index 7a47e0ff60..7a3d16afac 100755
> > --- a/configure
> > +++ b/configure
> > @@ -1523,6 +1523,7 @@ enable_psapi
> >  enable_pstorec
> >  enable_qasf
> >  enable_qcap
> > +enable_qdvd
> >  enable_qedit
> >  enable_qmgr
> >  enable_qmgrprxy
> > @@ -20803,6 +20804,7 @@ wine_fn_config_makefile dlls/qasf enable_qasf
> >  wine_fn_config_makefile dlls/qasf/tests enable_tests
> >  wine_fn_config_makefile dlls/qcap enable_qcap
> >  wine_fn_config_makefile dlls/qcap/tests enable_tests
> > +wine_fn_config_makefile dlls/qdvd enable_qdvd
> >  wine_fn_config_makefile dlls/qedit enable_qedit
> >  wine_fn_config_makefile dlls/qedit/tests enable_tests
> >  wine_fn_config_makefile dlls/qmgr enable_qmgr
> > diff --git a/configure.ac b/configure.ac
> > index fb775d7a73..e811478d4f 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -3582,6 +3582,7 @@ WINE_CONFIG_MAKEFILE(dlls/qasf)
> >  WINE_CONFIG_MAKEFILE(dlls/qasf/tests)
> >  WINE_CONFIG_MAKEFILE(dlls/qcap)
> >  WINE_CONFIG_MAKEFILE(dlls/qcap/tests)
> > +WINE_CONFIG_MAKEFILE(dlls/qdvd)
> >  WINE_CONFIG_MAKEFILE(dlls/qedit)
> >  WINE_CONFIG_MAKEFILE(dlls/qedit/tests)
> >  WINE_CONFIG_MAKEFILE(dlls/qmgr)
> > diff --git a/dlls/qdvd/Makefile.in b/dlls/qdvd/Makefile.in
> > new file mode 100644
> > index 0000000000..c4b7dcce1f
> > --- /dev/null
> > +++ b/dlls/qdvd/Makefile.in
> > @@ -0,0 +1,6 @@
> > +MODULE    = qdvd.dll
> > +
> > +EXTRADLLFLAGS = -mno-cygwin
> > +
> > +C_SRCS = \
> > +     qdvd_main.c
> > diff --git a/dlls/qdvd/qdvd.spec b/dlls/qdvd/qdvd.spec
> > new file mode 100644
> > index 0000000000..85103d692e
> > --- /dev/null
> > +++ b/dlls/qdvd/qdvd.spec
> > @@ -0,0 +1,4 @@
> > +@ stdcall -private DllCanUnloadNow()
> > +@ stdcall -private DllGetClassObject(ptr ptr ptr)
> > +3 stub DllRegisterServer
> > +4 stub DllUnregisterServer
>
> I don't think these need to be ordinals.
I missed these, but I already fixed it in version 3
>
> > diff --git a/dlls/qdvd/qdvd_main.c b/dlls/qdvd/qdvd_main.c
> > new file mode 100644
> > index 0000000000..39ab3d7261
> > --- /dev/null
> > +++ b/dlls/qdvd/qdvd_main.c
> > @@ -0,0 +1,65 @@
> > +/*
> > + * Copyright 2009 Austin English
> > + *
> > + * 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 "config.h"
>
> As Marvin has already complained, you don't use config.h in DLLs
> compiled with msvcrt.
Ok, will fix this.
>
> > +
> > +#include <stdarg.h>
> > +
> > +#include "windef.h"
> > +#include "winbase.h"
> > +#include "wine/debug.h"
> > +
> > +WINE_DEFAULT_DEBUG_CHANNEL(qdvd);
> > +
> > +LONG dll_ref = 0;
> > +
> > +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
> > +{
> > +
>
> Stray newline.
Will check and fix this.
>
> > +    switch (fdwReason)
> > +    {
> > +        case DLL_WINE_PREATTACH:
> > +            return FALSE;    /* prefer native version */
> > +        case DLL_PROCESS_ATTACH:
> > +            /* FIXME: Initialization */
>
> What initialization do you imagine qdvd will need?
Initialization of dll ref counting if needed.
I will remove this comment.
>
> > +            DisableThreadLibraryCalls(hinstDLL);
> > +            break;
> > +    }
> > +
> > +    return TRUE;
> > +}
> > +
> > +/***********************************************************************
> > + *        DllGetClassObject
> > + */
> > +HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
> > +{
> > +    FIXME("(%s %s %p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
> > +    return CLASS_E_CLASSNOTAVAILABLE;
> > +}
> > +
> > +/***********************************************************************
> > + *        DllCanUnloadNow
> > + */
> > +
> > +HRESULT WINAPI DllCanUnloadNow(void)
> > +{
> > +    return dll_ref != 0 ? S_FALSE : S_OK;
> > +}
>
> I won't object heavily to COM DLL refcounting, though it's generally not
> necessary.
I noticed this after sending this, cleaned it up in version 3.
>
> >
> > --
> > 2.26.0
>



More information about the wine-devel mailing list