ole32: Tell the advise holder what the data delegate is in DefaultHandle_DAdvise...
[wine] / DEVELOPERS-HINTS
index f30b0b2..d0436b0 100644 (file)
@@ -14,144 +14,215 @@ listed here are "stubbed out", meaning they still need to be implemented.
 DLLs (under dlls/):
 -------------------
 
+       activeds/               - Active Directory Service Interface
        advapi32/               - Crypto, systeminfo, security, eventlogging
+       advpack/                - Reads and verifies .INF files
+       amstream/               - MultiMedia Streams
+       atl/                    - Active Template Library
        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
-       commdlg/                - Common dialog boxes (both 16 & 32 bit)
+       comdlg32/               - Common dialog boxes (both 16 & 32 bit)
+       compstui/               - Common Property Sheet User Interface
        crtdll/                 - Old C runtime library
        crypt32/                - Cryptography
-       ctl3d/                  - 3D Effects for Common GUI Components
+       cryptdll/               - Cryptography Manager
+       ctl3d32/                - 3D Effects for Common GUI Components
        d3d8/                   - Direct3D (3D graphics)
        d3d9/                   - Direct3D (3D graphics)
        d3dim/                  - Direct3D Immediate Mode
+       d3drm/                  - Direct3D Retained Mode
        d3dx8/                  - Direct3D (3D graphics)
+       d3dxof/                 - DirectX Files Functions
+       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
+       dnsapi/                 - DNS support
        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
+       gphoto2.ds/             - Contains libgphoto2 based TWAIN datasource driver
+       hhctrl.ocx/             - HHCTRL OCX implementation
+       hlink/                  - Microsoft Hyperlink Library
+       iccvid/                 - Radius Cinepak Video Decoder
        icmp/                   - ICMP protocol (networking)
+       ifsmgr.vxd/             - IFSMGR VxD implementation
+       imaadp32.acm/           - IMA ADPCM Audio Codec
        imagehlp/               - PE (Portable Executable) Image Helper lib
        imm32/                  - Input Method Manager
+       inseng/                 - Install engine
        iphlpapi/               - IP Helper API
+       itss/                   - Infotech Structured Storage (HTML Help)
        kernel/                 - The Windows kernel
-       lzexpand/               - Lempel-Ziv compression/decompression
+       lz32/                   - Lempel-Ziv compression/decompression
        mapi32/                 - Mail interface
+       mciavi32/               - MCI video driver
+       mcicda/                 - MCI audio CD driver
+       mciseq/                 - MCI MIDI driver
+       mciwave/                - MCI wave driver
+       midimap/                - MIDI mapper
+       mlang/                  - Multi Language Support
+       mmdevldr.vxd/           - MMDEVLDR VxD implementation
+       monodebg.vxd/           - MONODEBG VxD implementation
        mpr/                    - Multi-Protocol Router (networking)
-       msacm/                  - Audio Compression Manager (multimedia)
+       mprapi/                 - Multi-Protocol Router Administration
+       msacm32/                - Audio Compression Manager (multimedia)
+       msacm32.drv/            - Audio mapper
+       msadp32.acm/            - MS ADPCM Audio Codec
+       mscms/                  - Color Management System
        msdmo/                  - DirectX Media Objects
-       msimg32/                - Gradient and transparency (graphics)
-       msisys/                 - System information
+       msftedit/               - Rich text editing control (Version 4.1)
+       msg711.acm/             - MS G711 Audio Codec (includes A-Law & MU-Law)
+       mshtml/                 - MS HTML component
        msi/                    - Microsoft Installer
+       msimg32/                - Gradient and transparency (graphics)
+       msisys.ocx/             - System information
        msnet32/                - Network interface
+       msrle32/                - Video codecs
        msvcrt/                 - C runtime library 
        msvcrt20/               - C runtime library version 2.0
+       msvcrt40/               - C runtime library version 4.0
        msvcrtd/                - C runtime library debugging
-       msvideo/                - 16 bit video manager
-       msvideo/msrle32/        - Video codecs
+       msvfw32/                - 16 bit video manager
+       msvidc32/               - Microsoft Video-1 Decoder
        mswsock/                - Misc networking
+       msxml3/                 - MSXML Class Factory
        netapi32/               - Network interface
+       newdev/                 - New Hardware Device Library
        ntdll/                  - NT implementation of kernel calls
+       ntdsapi/                - NT Directory Service Provider
+       objsel/                 - Object Picker Dialog
        odbc32/                 - Open DataBase Connectivity driver manager
+       odbccp32/               - Open DataBase Connectivity driver installer
        ole32/                  - 32 bit OLE 2.0 libraries
+       oleacc/                 - OLE accessibility support
        oleaut32/               - 32 bit OLE 2.0 automation
-       olecli/                 - 16 bit OLE client
+       olecli32/               - 16 bit OLE client
        oledlg/                 - OLE 2.0 user interface support
        olepro32/               - 32 bit OLE 2.0 automation
-       olesvr/                 - 16 bit OLE server
+       olesvr32/               - 16 bit OLE server
        opengl32/               - OpenGL implementation (graphics)
+       powrprof/               - Power Management and Profiling
        psapi/                  - Process Status interface
        qcap/                   - DirectShow runtime
        quartz/                 - DirectShow runtime
        rasapi32/               - Remote Access Server interface
-       richedit/               - Rich text editing control
+       riched20/               - Rich text editing control (Version 2.0 and 3.0)
+       riched32/               - Rich text editing control
        rpcrt4/                 - Remote Procedure Call runtime
+       rsabase/                - RSA encryption
+       rsaenh/                 - Crypto API (DES, 3DES, RSA, etc.)
+       sane.ds/                - Contains sane based TWAIN datasource driver
+       secur32/                - Contains Windows Security functions
+       security/               - Security Support Provider Interface
+       sensapi/                - System Event Notification Service
        serialui/               - Serial port property pages
        setupapi/               - Setup interface
+       sfc/                    - System File Checker (Windows File Protection)
        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)
+       spoolss/                - Spooler Subsystem Library ("spooler" - Service)
+       stdole2.tlb/            - OLE Automation typelib
+       stdole32.tlb/           - Standard OLE typelib
        sti/                    - Still Image service
        tapi32/                 - Telephone interface
-       ttydrv/                 - TTY display driver (Wine specific)
-       twain/                  - TWAIN Imaging device communications
+       twain_32/               - 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)
+       urlmon/                 - URL Moniker allows binding to a URL
        user/                   - Window management, standard controls, etc.
+       userenv/                - User - Environment and Policy Management
+       usp10/                  - Uniscribe Script Processor
        uxtheme/                - Theme library
+       vdhcp.vxd/              - VDHCP VxD implementation
+       vdmdbg/                 - Virtual DOS machine debug library
        version/                - File installation library
-       win32s/                 - 32-bit function access for 16-bit systems
-       winaspi/                - 16 bit Advanced SCSI Peripheral Interface
-       winedos/                - DOS features and BIOS calls (interrupts) (wine specific)
-       wineps/                 - Postscript driver (Wine specific)
+       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
+       win32skrnl/             - 32-bit function access for 16-bit systems
+       wined3d/                - Wine internal Direct3D helper
+       winedos/                - DOS features and BIOS calls (Wine specific)
+       winemp3.acm/            - Mpeg Layer 3 Audio Codec
+       wineps.drv/             - Postscript driver (Wine specific)
+       winex11.drv/            - X11 display driver (Wine specific)
        wininet/                - Internet extensions
        winmm/                  - Multimedia (16 & 32 bit)
        winmm/joystick/         - Joystick driver
-       winmm/mcianim/          - MCI animation driver
-       winmm/mciavi/           - MCI video driver
-       winmm/mcicda/           - MCI audio CD driver
-       winmm/mciseq/           - MCI MIDI driver
-       winmm/mciwave/          - MCI wave driver
-       winmm/midimap/          - MIDI mapper
-       winmm/wavemap/          - Audio mapper
        winmm/winealsa/         - ALSA audio driver
        winmm/winearts/         - aRts audio driver
        winmm/wineaudioio/      - audioio audio driver
+       winmm/winecoreaudio/    - CoreAudio audio driver (MacOS)
        winmm/winejack/         - JACK audio server driver
        winmm/winenas/          - NAS audio driver
        winmm/wineoss/          - OSS audio driver
-       winnls/                 - National Language Support
-       winsock/                - Sockets 2.0 (networking)
-       wsock32/                - Sockets 1.1 (networking)
+       winnls32/               - National Language Support
+       winspool.drv/           - Printing & Print Spooler
        wintab32/               - Tablet device interface
-       winspool/               - Printing & Print Spooler
        wintrust/               - Trust verification interface
+       wldap32/                - LDAP support
+       wnaspi32/               - 16 bit Advanced SCSI Peripheral Interface
        wow32/                  - WOW subsystem
-       x11drv/                 - X11 display driver (Wine specific)
+       ws2_32/                 - Sockets 2.0 (networking)
+       wsock32/                - Sockets 1.1 (networking)
+       wtsapi32/               - Terminal Services
 
 Winelib programs (under programs/):
 -----------------------------------
 
-       avitools/               - AVI information viewer and player
        clock/                  - Graphical clock
        cmdlgtst/               - Common dialog tests
        control/                - Control panel
+       eject/                  - Unmount and eject removable Media
        expand/                 - Decompress Lempel-Ziv compressed archive
-       notepad/                - Notepad with RichEdit functionality
+       explorer/               - Desktop/Systray/HAL-Manager, Winefile-wrapper
+       hh/                     - HTML Help viewer
+       icinfo/                 - List/Configure installed Video Compressors
+       iexplore/               - Internet Explorer replacement 
+       msiexec/                - Microsoft Installer frontend
+       notepad/                - Notepad replacement 
+       oleview/                - OLE/COM Object Viewer
        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
        wineboot/               - Wine bootstrap process
+       winebrowser/            - Frontend for Webbrowsers on the Host
        winecfg/                - Wine configuration utility
        wineconsole/            - Console
        winedbg/                - Debugger
@@ -163,48 +234,37 @@ Winelib programs (under programs/):
        winevdm/                - Wine virtual DOS machine
        winhelp/                - Help viewer
        winver/                 - Windows Version Program
+       wordpad/                - Wordpad replacement skeleton
 
 
 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/strmiids/          - Exports class CLSIDs and interface IIDs
+       dlls/uuid/              - Windows-compatible UUID import lib
        documentation/          - some documentation
        include/                - Windows standard includes
-       include/msvcrt          - MSVC compatible libc headers
-       include/wine            - Wine specific headers
+       include/ddk/            - Windows DDK compatible 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/                  - 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:
---------------
-
-Note: these directories will ultimately get moved into their
-respective dlls.
-
-       files/                  - KERNEL file I/O
-       misc/                   - KERNEL registry 
-
-       graphics/               - GDI graphics drivers
-       objects/                - GDI logical objects
-
-       controls/               - USER built-in widgets
-       windows/                - USER window management
+       tools/widl/             - the IDL compiler
+       tools/winapi/   - 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/wrc/              - the resource compiler
 
 
 
@@ -253,6 +313,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.
@@ -260,19 +325,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("(%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.
@@ -302,7 +364,7 @@ following:
 4.  Run ./make_dlls in the dlls directory to update Makefile.in in
     that directory.
 
-5.  You can now regenerate ./configure file (with 'make configure')
+5.  You can now regenerate ./configure file (with 'autoconf')
     and the various Makefiles (with 'configure; make depend') (run
     from the top of Wine's tree).
     You should now have a Makefile file in ./dlls/<MyDll>/
@@ -416,16 +478,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
 ==============================================
@@ -436,8 +488,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.
 
@@ -474,30 +525,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
 ==============