kernel: Added a basic test for exception handling in threads.
[wine] / DEVELOPERS-HINTS
index 66d6459..6cc8fbb 100644 (file)
@@ -14,22 +14,31 @@ 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)
        crtdll/                 - Old C runtime library
        crypt32/                - Cryptography
+       cryptdll/               - Cryptography Manager
        ctl3d/                  - 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)
@@ -46,40 +55,57 @@ DLLs (under dlls/):
        dmusic32/               - DirectMusic Legacy Port
        dplay/                  - DirectPlay (networking)
        dplayx/                 - DirectPlay (networking)
+       dpnet/                  - DirectPlay (networking)
        dpnhpast/               - DirectPlay NAT Helper PAST
        dsound/                 - DirectSound (audio)
+       dswave/                 - DirectMusic Wave
+       dxdiagn/                - DirectX Diagnostic Tool 
        gdi/                    - GDI (graphics)
        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
+       itss/                   - Infotech Structured Storage (HTML Help)
        kernel/                 - The Windows kernel
        lzexpand/               - Lempel-Ziv compression/decompression
        mapi32/                 - Mail interface
+       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)
        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
+       mscms/                  - Color Management System
        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
+       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
+       msvidc32/               - Microsoft Video-1 Decoder
        msvideo/                - 16 bit video manager
-       msvideo/msrle32/        - Video codecs
        mswsock/                - Misc networking
+       msxml3/                 - MSXML Class Factory
        netapi32/               - Network interface
        newdev/                 - New Hardware Device Library
        ntdll/                  - NT implementation of kernel calls
+       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
@@ -88,33 +114,48 @@ DLLs (under dlls/):
        olepro32/               - 32 bit OLE 2.0 automation
        olesvr/                 - 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
+       riched20/               - Rich text editing control version 2.0
        richedit/               - Rich text editing control
        rpcrt4/                 - Remote Procedure Call runtime
+       rsabase/                - RSA encryption
+       rsaenh/                 - Crypto API (DES, 3DES, RSA, etc.)
+       secur32/                - Contains Windows Security functions
+       sensapi/                - System Event Notification Service
        serialui/               - Serial port property pages
        setupapi/               - Setup interface
        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)
+       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
        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.
+       usp10/                  - Uniscribe Script Processor
        uxtheme/                - Theme library
+       vdhcp.vxd/              - VDHCP VxD implementation
+       vdmdbg/                 - Virtual DOS machine debug library
        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)
+       winedos/                - DOS features and BIOS calls (Wine specific)
        wineps/                 - Postscript driver (Wine specific)
        wininet/                - Internet extensions
        winmm/                  - Multimedia (16 & 32 bit)
@@ -124,7 +165,6 @@ DLLs (under dlls/):
        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
@@ -134,11 +174,13 @@ 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
+       wldap32/                - LDAP support
        wow32/                  - WOW subsystem
+       wsock32/                - Sockets 1.1 (networking)
+       wtsapi32/               - Terminal Services
        x11drv/                 - X11 display driver (Wine specific)
 
 Winelib programs (under programs/):
@@ -149,13 +191,15 @@ Winelib programs (under programs/):
        cmdlgtst/               - Common dialog tests
        control/                - Control panel
        expand/                 - Decompress Lempel-Ziv compressed archive
-       notepad/                - Notepad with RichEdit functionality
+       msiexec/                - Microsoft Installer frontend
+       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
@@ -176,10 +220,12 @@ 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/strmiids/          - Exports class CLSIDs and interface IIDs
        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
@@ -201,22 +247,6 @@ Support programs, libraries, etc:
        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
-
-
 
 IMPLEMENTING NEW API CALLS
 ==========================
@@ -263,6 +293,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.
@@ -270,19 +305,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.
@@ -312,7 +344,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>/
@@ -426,16 +458,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
 ==============================================
@@ -446,8 +468,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.
 
@@ -484,30 +505,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
 ==============