Added environ support for Darwin.
[wine] / DEVELOPERS-HINTS
index 8b5fc22..beddbca 100644 (file)
@@ -15,10 +15,12 @@ DLLs (under dlls/):
 -------------------
 
        advapi32/               - Crypto, systeminfo, security, eventlogging
+       amstream/               - MultiMedia Streams
        avicap32/               - AVI capture window class
        avifil32/               - COM object to play AVI files
        cabinet/                - Cabinet file interface
        capi2032/               - Wrapper library for CAPI4Linux access
+       cards/                  - Card graphics
        cfgmgr32/               - Config manager
        comcat/                 - Component category manager
        comctl32/               - Common controls
@@ -29,53 +31,71 @@ DLLs (under dlls/):
        d3d8/                   - Direct3D (3D graphics)
        d3d9/                   - Direct3D (3D graphics)
        d3dim/                  - Direct3D Immediate Mode
+       d3drm/                  - Direct3D Retained Mode
        d3dx8/                  - Direct3D (3D graphics)
+       dbghelp/                - Engine for symbol and module enumeration
        dciman32/               - DCI Manager (graphics)
        ddraw/                  - DirectDraw (graphics)
        devenum/                - Device enumeration (part of DirectShow)
        dinput/                 - DirectInput (device input)
        dinput8/                - DirectInput (device input)
-       dmband/                 - DirectMusic
-       dmcompos/               - DirectMusic
-       dmime/                  - DirectMusic
-       dmloader/               - DirectMusic
-       dmscript/               - DirectMusic
-       dmstyle/                - DirectMusic
-       dmsynth/                - DirectMusic
-       dmusic/                 - DirectMusic
-       dmusic32/               - DirectMusic
+       dmband/                 - DirectMusic Band
+       dmcompos/               - DirectMusic Composer
+       dmime/                  - DirectMusic Interactive Engine
+       dmloader/               - DirectMusic Loader
+       dmscript/               - DirectMusic Scripting
+       dmstyle/                - DirectMusic Style Engine
+       dmsynth/                - DirectMusic Software Synthesizer
+       dmusic/                 - DirectMusic Core Services
+       dmusic32/               - DirectMusic Legacy Port
        dplay/                  - DirectPlay (networking)
        dplayx/                 - DirectPlay (networking)
-       dpnhpast/               - DirectPlay NAT Helper
+       dpnet/                  - DirectPlay (networking)
+       dpnhpast/               - DirectPlay NAT Helper PAST
        dsound/                 - DirectSound (audio)
+       dswave/                 - DirectMusic Wave
+       dxdiagn/                - DirectX Diagnostic Tool 
        gdi/                    - GDI (graphics)
-       gdi/enhmfdrv/           - Enhanced metafile driver
-       gdi/mfdrv/              - Metafile driver
        glu32/                  - OpenGL Utility library (graphics)
+       glut32/                 - OpenGL Utility Toolkit
+       hhctrl.ocx/             - HHCTRL OCX implementation
+       iccvid/                 - Radius Cinepak Video Decoder
        icmp/                   - ICMP protocol (networking)
+       ifsmgr.vxd/             - IFSMGR VxD implementation
        imagehlp/               - PE (Portable Executable) Image Helper lib
        imm32/                  - Input Method Manager
        iphlpapi/               - IP Helper API
        kernel/                 - The Windows kernel
        lzexpand/               - Lempel-Ziv compression/decompression
        mapi32/                 - Mail interface
+       mmdevldr.vxd/           - MMDEVLDR VxD implementation
+       monodebg.vxd/           - MONODEBG VxD implementation
        mpr/                    - Multi-Protocol Router (networking)
        msacm/                  - Audio Compression Manager (multimedia)
+       msacm/imaadp32/         - IMA ADPCM Audio Codec
+       msacm/msadp32/          - MS ADPCM Audio Codec
+       msacm/msg711/           - MS G711 Audio Codec (includes A-Law & MU-Law)
+       msacm/winemp3/          - Mpeg Layer 3 Audio Codec
        msdmo/                  - DirectX Media Objects
+       mshtml/                 - MS HTML component
+       msi/                    - Microsoft Installer
        msimg32/                - Gradient and transparency (graphics)
        msisys/                 - System information
-       msi/                    - Microsoft Installer
        msnet32/                - Network interface
        msvcrt/                 - C runtime library 
        msvcrt20/               - C runtime library version 2.0
+       msvcrt40/               - C runtime library version 4.0
        msvcrtd/                - C runtime library debugging
+       msvidc32/               - Microsoft Video-1 Decoder
        msvideo/                - 16 bit video manager
        msvideo/msrle32/        - Video codecs
        mswsock/                - Misc networking
        netapi32/               - Network interface
+       newdev/                 - New Hardware Device Library
        ntdll/                  - NT implementation of kernel calls
        odbc32/                 - Open DataBase Connectivity driver manager
        ole32/                  - 32 bit OLE 2.0 libraries
+       oleacc/                 - OLE accessibility support
        oleaut32/               - 32 bit OLE 2.0 automation
        olecli/                 - 16 bit OLE client
        oledlg/                 - OLE 2.0 user interface support
@@ -88,24 +108,35 @@ DLLs (under dlls/):
        rasapi32/               - Remote Access Server interface
        richedit/               - Rich text editing control
        rpcrt4/                 - Remote Procedure Call runtime
+       rsabase/                - RSA encryption
+       secur32/                - Contains Windows Security functions
        serialui/               - Serial port property pages
        setupapi/               - Setup interface
+       setupx/                 - Contains functions used by the Windows Setup
        shdocvw/                - Shell document object and control
-       shfolder/               - Shell folder service
        shell32/                - COM object implementing shell views
+       shfolder/               - Shell folder service
        shlwapi/                - Shell Light-Weight interface
        snmpapi/                - SNMP protocol interface (networking)
        sti/                    - Still Image service
        tapi32/                 - Telephone interface
        ttydrv/                 - TTY display driver (Wine specific)
        twain/                  - TWAIN Imaging device communications
+       unicows/                - Unicows replacement (Unicode layer for Win9x)
        url/                    - Internet shortcut shell extension
        urlmon/                 - URL Moniker allows binding to a URL (like KIO/gnome-vfs)
        user/                   - Window management, standard controls, etc.
        uxtheme/                - Theme library
+       vdhcp.vxd/              - VDHCP VxD implementation
        version/                - File installation library
+       vmm.vxd/                - VMM VxD implementation
+       vnbt.vxd/               - VNBT VxD implementation
+       vnetbios.vxd/           - VNETBIOS VxD implementation
+       vtdapi.vxd/             - VTDAPI VxD implementation
+       vwin32.vxd/             - VWIN32 VxD implementation
        win32s/                 - 32-bit function access for 16-bit systems
        winaspi/                - 16 bit Advanced SCSI Peripheral Interface
+       wined3d/                - Wine internal Direct3D helper
        winedos/                - DOS features and BIOS calls (interrupts) (wine specific)
        wineps/                 - Postscript driver (Wine specific)
        wininet/                - Internet extensions
@@ -126,11 +157,11 @@ DLLs (under dlls/):
        winmm/wineoss/          - OSS audio driver
        winnls/                 - National Language Support
        winsock/                - Sockets 2.0 (networking)
-       wsock32/                - Sockets 1.1 (networking)
-       wintab32/               - Tablet device interface
        winspool/               - Printing & Print Spooler
+       wintab32/               - Tablet device interface
        wintrust/               - Trust verification interface
        wow32/                  - WOW subsystem
+       wsock32/                - Sockets 1.1 (networking)
        x11drv/                 - X11 display driver (Wine specific)
 
 Winelib programs (under programs/):
@@ -141,13 +172,14 @@ Winelib programs (under programs/):
        cmdlgtst/               - Common dialog tests
        control/                - Control panel
        expand/                 - Decompress Lempel-Ziv compressed archive
-       notepad/                - Notepad with RichEdit functionality
+       notepad/                - Notepad replacement 
        progman/                - Program manager
        regedit/                - Registry editor
        regsvr32/               - Register COM server
        rpcss/                  - RPC services
        rundll32/               - Execute DLL functions directly
        start/                  - Replacement for start.exe
+       taskmgr/                - Manage running Windows/Winelib applications
        uninstaller/            - Remove installed programs
        view/                   - Metafile viewer
        wcmd/                   - Command line interface
@@ -168,19 +200,31 @@ Winelib programs (under programs/):
 Support programs, libraries, etc:
 ---------------------------------
 
+       dlls/dxerr8/            - DirectX 8 error import lib
+       dlls/dxerr9/            - DirectX 9 error import lib
+       dlls/dxguid/            - DirectX UUID import lib
+       dlls/uuid/              - Windows-compatible UUID import lib
        documentation/          - some documentation
+       documentation/samples/  - sample configuration files
        include/                - Windows standard includes
-       include/msvcrt          - MSVC compatible libc headers
-       include/wine            - Wine specific headers
+       include/msvcrt/         - MSVC compatible libc headers
+       include/wine/           - Wine specific headers
        libs/                   - the Wine libraries
        libs/port/              - portability library
        libs/unicode/           - Unicode support shared
-       libs/uuid/              - Windows-compatible UUID numbers
        libs/wine/              - Wine bootstrap library
        libs/wpp/               - C preprocessor
        loader/                 - the main Wine loader
        server/                 - the Wine server
-       tools/                  - relay code builder, resource compiler, etc.
+       tools/                  - various tools used to build/check Wine
+       tools/widl/             - the IDL compiler
+       tools/winapi{,_check}/  - A Win32 API checker
+       tools/winebuild/        - Wine build tool
+       tools/winedump/         - a .DLL dump utility
+       tools/winegcc/          - a MinGW command line compatible gcc wrapper
+       tools/wmc/              - the message compiler
+       tools/wpp/              - the C pre-processor library
+       tools/wrc/              - the resource compiler
 
 
 Miscellaneous:
@@ -189,10 +233,8 @@ Miscellaneous:
 Note: these directories will ultimately get moved into their
 respective dlls.
 
-       files/                  - KERNEL file I/O
-       misc/                   - KERNEL shell, registry, winsock, etc.
+       misc/                   - KERNEL registry 
 
-       graphics/               - GDI graphics drivers
        objects/                - GDI logical objects
 
        controls/               - USER built-in widgets
@@ -245,6 +287,11 @@ into a stub:
    *  
    * Draw many Bezier curves.
    *
+   * PARAMS
+   *   hdc   [I] Device context to draw to
+   *   p     [I] Array of POINT structs
+   *   count [I] Number of points in p
+   *
    * RETURNS
    *   Success: Non-zero.
    *   Failure: FALSE. Use GetLastError() to find the error cause.
@@ -252,19 +299,16 @@ into a stub:
    * BUGS
    *   Unimplemented
    */
-   BOOL WINAPI PolyBezierTo(HDC hdc,     /* [In] Device context to draw to */
-                            LPCVOID p,   /* [In] Array of POINT structs */
-                            DWORD count  /* [In] Number of points in p */
-   ) 
+   BOOL WINAPI PolyBezierTo(HDC hdc, LPCVOID p, DWORD count) 
    {
-      /* tell the user they've got a substandard implementation */
-      FIXME(gdi, ":(%x,%p,%d): stub\n", hdc, p, count);
-
-      /* some programs may be able to compensate, 
-       * if they know what happened 
-       */
-      SetLastError(ERROR_CALL_NOT_IMPLEMENTED);  
-      return FALSE;    /* error value */
+       /* tell the user they've got a substandard implementation */
+       FIXME(gdi, ":(%x,%p,%d): stub\n", hdc, p, count);
+
+       /* some programs may be able to compensate, 
+        * if they know what happened 
+        */
+       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);  
+       return FALSE;    /* error value */
    }
 
 4. Implement and test the rest of the function.
@@ -408,16 +452,6 @@ struct { BYTE x; WORD y; };
 
 For alignment on a 2-byte boundary, there is a "pshpack2.h", etc.
 
-The use of the WINE_PACKED attribute is obsolete. Please remove these 
-in favour of the above solution. 
-Using WINE_PACKED, you would declare the above structure like this:
-
-struct { BYTE x; WORD y WINE_PACKED; };
-
-You had to do this every time a structure member is not aligned
-correctly under Windows (i.e. a WORD not on an even address, or a
-DWORD on a address that was not a multiple of 4).
-
 
 NAMING CONVENTIONS FOR API FUNCTIONS AND TYPES
 ==============================================
@@ -428,8 +462,7 @@ functions and types. If the Windows API uses the name 'xxx', the Wine
 code must use:
 
  - 'xxx16' for the Win16 version,
- - 'xxx'   for the Win32 version when no ASCII/Unicode strings are
-   involved,
+ - 'xxx'   for the Win32 version when no strings are involved,
  - 'xxxA'  for the Win32 version with ASCII strings,
  - 'xxxW'  for the Win32 version with Unicode strings.
 
@@ -466,30 +499,6 @@ and this will use the correct declaration depending on the definition
 of the UNICODE symbol.
 
 
-NAMING CONVENTIONS FOR NON-API FUNCTIONS AND TYPES
-==================================================
-
-Functions and data which are internal to your code (or at least shouldn't be
-visible to any Winelib or Windows program) should be preceded by
-an identifier to the module:
-
-Examples:
-
-ENUMPRINTERS_GetDWORDFromRegistryA()    (in dlls/winspool/info.c)
-IAVIFile_fnRelease()                    (in dlls/avifil32/avifile.c)
-X11DRV_CreateDC()                       (in graphics/x11drv/init.c)
-
-if you need prototypes for these, there are a few possibilities:
-- within same source file only:
-  put the prototypes at the top of your file and mark them as prototypes.
-- within the same module:
-  create a header file within the subdirectory where that module resides,
-  e.g.  graphics/ddraw_private.h
-- from a totally different module, or for use in winelib:
-  you should never do that. Only exported APIs can be called across
-  module boundaries.
-
-
 DEBUG MESSAGES
 ==============