windows-devel.rst
changeset 669 216fb0a6ca77
parent 617 fe3e777b47f3
child 686 68e738cda3a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windows-devel.rst	Sun Nov 07 19:58:27 2010 +0200
@@ -0,0 +1,223 @@
+-*- mode: outline -*-
+
+* Dependency Walker.
+
+Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows
+module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of
+all dependent modules. For each module found, it lists all the functions that
+are exported by that module, and which of those functions are actually being
+called by other modules. Another view displays the minimum set of required
+files, along with detailed information about each file including a full path
+to the file, base address, version numbers, machine type, debug information,
+and more.
+
+See
+
+  http://www.dependencywalker.com/
+
+* Windows 2000 Resource Kit Tools.
+
+  http://support.microsoft.com/kb/927229
+                Windows 2000 Resource Kit Tools for administrative tasks
+
+* Sysinternals.
+
+TODO
+
+* Application verifier.
+
+  http://www.microsoft.com/downloads/en/details.aspx?familyid=c4a25ab9-649d-4a1b-b4a7-c9d8b095df18
+                download page
+  http://msdn.microsoft.com/en-us/library/ms220948.aspx
+                Application Verifier
+
+* Running at startup.
+
+  HKCU\Software\Microsoft\Windows\CurrentVersion\Run
+                Launches a program automatically when a particular user logs
+                in. This key is used when you always want to launch a program
+                when a particular user is using a system.
+  HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
+                Launches a program the next time the user logs in and removes
+                its value entry from the registry. This key is typically used
+                by installation programs.
+  HKLM\Software\Microsoft\Windows\CurrentVersion\Run
+                Launches a program automatically at system startup. This key
+                is used when you always want to launch a program on a
+                particular system.
+  HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
+                Launches a program the next time the system starts and removes
+                its value entry from the registry. This key is typically used
+                by installation programs.
+  HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices
+                Launches a service (a standard NT service or a background
+                process) automatically at startup. An example of a service is
+                a Web server such as Microsoft Internet Information Server.
+  HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
+                Launches a service (a standard NT service or a background
+                process) the next time the system is started, then removes its
+                value entry from the registry.
+
+Values to registry on Windows XP can be added by:
+
+  cmd> reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v run.bat /t REG_SZ /d "path\to\run.bat"
+  cmd> reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run   <-- see what done
+
+* MFC.
+
+** Can I link to MFC statically.
+
+Yes.
+
+  http://msdn.microsoft.com/en-us/library/f22wcbea%28VS.80%29.aspx
+
+* Microsoft Visual C++ Redistributable Package.
+
+  http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=32bc1bee-a3f9-4c13-9c99-220b62a191ee&displayLang=en
+                This package installs runtime components of C Runtime (CRT),
+                Standard C++, ATL, MFC, OpenMP and MSDIA libraries.
+
+* Cabinet file (.cab).
+
+  http://support.microsoft.com/kb/198038
+                INFO: Useful Tools for Package and Deployment Issues
+  http://msdn.microsoft.com/en-us/library/aa367841%28VS.85%29.aspx
+                The Makecab.exe utility is included in the Windows SDK
+                Components for Windows Installer Developers.
+  http://web.archive.org/web/20070403215326/http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exe
+                download link from web archive
+  http://msdn.microsoft.com/en-us/library/aa370834%28v=VS.85%29.aspx
+                The components of the Windows Installer Software Development
+                Kit are included in the Microsoft Windows Software Development
+                Kit (SDK).
+  http://msdn.microsoft.com/en-us/library/bb417343.aspx
+                Microsoft Cabinet Format
+
+* Internet Explorer.
+
+** Debugging.
+
+Install IE 8.0 and press 'F12' key.
+
+  http://msdn.microsoft.com/library/dd565626.aspx
+                Developer Tools User Interface Reference
+
+* Microsoft technologies.
+
+** COM.
+
+The family of COM technologies includes COM+, Distributed COM (DCOM) and ActiveX® Controls.
+
+  http://www.microsoft.com/com/default.mspx
+                home page
+
+** OLE.
+
+OLE (Object Linking and Embedding) allows embedding and linking to documents and other objects.
+
+OLE 1.0 released in 1990, OLE 2.0 released in 1993, in 1994 OLE custom controls (OCXs) were
+introduced.
+
+OLE objects and containers are implemented on top of the Component Object Model.
+
+Next release after 2.0 introdused in 1996 and named as ActiveX.
+
+  http://en.wikipedia.org/wiki/Object_Linking_and_Embedding
+
+** ActiveX.
+
+Faced with the complexity of OLE 2.0 and with poor support for COM in MFC, Microsoft rationalized
+the specifications to make them simpler, and rebranded the technology as ActiveX in 1996.
+
+  http://msdn.microsoft.com/en-us/library/aa751968.aspx
+                ActiveX Controls
+  http://en.wikipedia.org/wiki/ActiveX
+
+** ATL.
+
+The Active Template Library (ATL) is a set of template-based C++ classes developed by Microsoft,
+intended to simplify the programming of Component Object Model (COM) objects.
+
+  http://en.wikipedia.org/wiki/Active_Template_Library
+
+** MFC.
+
+MFC (Microsoft Foundation Classes) is a library that wraps portions of the Windows API in C++
+classes, including functionality that enables them to use a default application framework. Classes
+are defined for many of the handle-managed Windows objects and also for predefined windows and
+common controls.
+
+A lightweight alternative to MFC is the Windows Template Library (WTL).
+
+  http://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library
+  http://ru.wikipedia.org/wiki/Microsoft_Foundation_Classes
+
+** WTL.
+
+WTL (Windows Template Library) is a free software, object-oriented C++ template library for Win32
+development.
+
+WTL provides support for implementing various user interface elements, to MDI, standard and common
+controls, common dialogs, property sheets and pages, GDI objects, and other common UI elements, such
+as scrollable windows, splitter windows, toolbars and command bars.
+
+Most of the WTL API is a mirror of the standard Win32 calls.
+
+  http://sourceforge.net/projects/wtl
+  http://en.wikipedia.org/wiki/Windows_Template_Library
+
+* Windows style variable names.
+
+  Prefix   |  Data type
+  ---------+-----------------------------------------
+  b        |  boolean
+  by       |  byte or unsigned char
+  c        |  char
+  cx / cy  |  short used as size
+  dw       |  DWORD, double word or unsigned long
+  fn       |  function
+  h        |  handle
+  i        |  int (integer)
+  l        |  Long
+  n        |  short int
+  p        |  a pointer variable containing the address of a variable
+  s        |  string
+  sz       |  ASCIIZ null-terminated string
+  w        |  WORD unsigned int
+  x, y     |  short used as coordinates
+
+  PrefixCategory  | Mean
+  ----------------+----------------
+  CS              | Class style
+  CW              | Create window
+  DT              | Draw text
+  IDC             | Cursor ID
+  IDI             | Icon ID
+  WM              | Window message
+  WS              | Window style
+
+  Data type | Meaning
+  ----------+-------------------------------------------------------------------
+  FAR       | Same as far. Identifies an address that originally used the
+            | segment:offset addressing schema. Now FAR simply identifies a
+            | (default) 32-bit address but may be omitted entirely in many cases.
+            |
+  PASCAL    | Same as Pascal. The Pascal convention demanded by Windows
+            | defines the order in which arguments are found in the stack when
+            | passed as calling parameters.
+            |
+  WORD	    | Unsigned integer (16 bits)
+            |
+  UINT      | Unsigned integer, same as WORD
+            |
+  DWORD     | Double word, unsigned long int (32 bits)
+            |
+  LONG      | Signed long integer (32 bits)
+            |
+  LPSTR     | Long (far) pointer to character string
+            |
+  NEAR      | Obsolete, previously identified an address value within a 16KB
+            | memory block.
+
+  http://www.tenouk.com/cnotation.html
+                C/C++ NOTATION STORY