svrapi: realizes library svrapi.dll (3 of 20 functions).

Detlef Riekenberg wine.dev at web.de
Mon Jul 24 09:59:45 CDT 2006


Konstantin Petrov wrote:


Your Patch is much to large.

> dlls/svrapi/Makefile,
> dlls/svrapi/libsvrapi.def,

This files are created automatic by the build-system.


> +16 stdcall NetShareAdd (str long str long) WIN98_NetShareAdd
> +17 stdcall NetShareDel(str str long) WIN98_NetShareDel
> +18 stdcall NetShareEnum(str long ptr long ptr ptr) WIN98_NetShareEnum
> +19 stub NetShareGetInfo
> +20 stub NetShareSetInfo

Are the ordinals needed / Which app import this Functions by Ordinal?

> --- /dev/null   2006-07-03 10:36:18 +0400
> +++ dlls/svrapi/svrapi_main.c   2006-07-24 15:08:49 +0400

I suggest to send a Patch, that has only "DllMain" in this File to
reduce the size.
Add a stub with description in a separate Patch.


> +//SHPWLEN is not known !!!!!!
C++ - Comments are not allowed in wine (it's not portable)


> +#define SHPWLEN LM20_PWLEN

> +typedef struct _share_info_1 {
> +       char shi1_netname[LM20_NNLEN+1];
> +       char shi1_pad1;
> +       unsigned short shi1_type;
> +       char* shi1_remark;
> +} share_info_1;

> +typedef struct _share_info_50 {
> +       char shi50_netname[LM20_NNLEN+1];
> +       unsigned char shi50_type;
> +       unsigned short shi50_flags;
> +       char* shi50_remark;
> +       char* shi50_path;
> +       char shi50_rw_password[SHPWLEN+1];
> +       char shi50_ro_password[SHPWLEN+1];
> +} share_info_50;

This seems to be the wrong location here. (svrapi.h)
Should be the first patch (only this include-file)

> +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID
> fImpLoad)
> +{
> +    TRACE("%p 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad);
> +
> +    switch(fdwReason) {

Do not forget "DLL_WINE_PREATTACH"

> +       
> +       FIXME("Stub (%s %d %p %d %p %p)\n", (pszServer ?
> pszServer:"NULL"), sLevel, pbBuffer,
> +             cbBuffer, pcEntriesRead, pcTotalAvail);

you need debugstr_a()



> +       if (pbBuffer != NULL)
> +               HeapFree(GetProcessHeap(), 0, pbBuffer);

HeapFree() handles NULL; we removed similar unneeded "if" recently.

> +       if(pszServer != NULL) return NERR_NetNameNotFound;

Many Functions in other dll's handle an empty Servername as an alias for
the local Computer (the same way as an NULL-Parameter).
Did you test this?

> + //     if ((sLevel == 50) && (cbBuffer ==
> sizeof(share_info_50)))  //in real

Why do you not use this code, when it reflects the windows-behavior? 


-- 
By By ...
      ... Detlef




More information about the wine-devel mailing list