summaryrefslogtreecommitdiffstats
path: root/private/mvdm/wow32/wmmalias.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/mvdm/wow32/wmmalias.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/private/mvdm/wow32/wmmalias.h b/private/mvdm/wow32/wmmalias.h
new file mode 100644
index 000000000..174c0ebe7
--- /dev/null
+++ b/private/mvdm/wow32/wmmalias.h
@@ -0,0 +1,95 @@
+/*++ BUILD Version: 0001
+ *
+ * WOW v1.0
+ *
+ * Copyright (c) 1991, Microsoft Corporation
+ *
+ * WMMALIAS.H
+ * WOW32 16-bit handle alias support
+ *
+ * History:
+ * Created Sept-1-1992 by Chandan Chauhan (ChandanC)
+ * Modified 12-May-1992 by Mike Tricker (miketri) to add MultiMedia support
+--*/
+
+
+
+/* 16-bit handle format
+ *
+ * Bits 0 and 1 are always zero (potential compatibility requirement).
+ * Note however that the macros below treat HASH_BITS as starting at bit
+ * 0, for simplicity. We just shift the alias left two bits when we're
+ * done. The actual number of low bits that are reserved is determined
+ * by RES_BITS.
+ *
+ * Of the remaining 14 bits, the next HASH_BITS bits are the hash slot #
+ * (relative to 0), followed by LIST_BITS bits containing the list slot #
+ * (relative to 1). List slot is relative to 1 because some portion of
+ * a valid handle must be non-zero; this is also why LIST_SLOTS contains
+ * that extra "-1".
+ */
+#define RES_BITS 2
+
+#define HASH_BITS 6
+#define HASH_SLOTS (1 << HASH_BITS)
+#define HASH_MASK (HASH_SLOTS-1)
+#define MASK32(h32) ((INT)(h32))
+#define HASH32(h32) (MASK32(h32) & (HASH_SLOTS-1))
+
+#define LIST_BITS (16-RES_BITS-HASH_BITS)
+#define LIST_SLOTS ((1 << LIST_BITS) - 1)
+#define LIST_MASK (LIST_SLOTS << HASH_BITS)
+
+#define ALIAS_SLOTS 128 // must be a power of 2
+
+
+/* Class map entry
+ */
+#pragma pack(2)
+typedef struct _WCDM { /* wcd */
+ struct _WCD *pwcdNext; // pointer to next wcd entry
+ PSZ pszClass; // pointer to local copy of class name
+ VPSZ vpszMenu; // pointer to original copy of menu name, if any
+ HAND16 hModule16; // handle of owning module
+ HAND16 hInst16; // 16-bit hInstance (wndclass16.hInstance)
+ WORD nWindows; // # of windows in existence based on class
+ VPWNDPROC vpfnWndProc; // 16-bit window proc address
+ WORD wStyle; // Class Style bits
+} WCD, *PWCD, **PPWCD;
+#pragma pack()
+
+
+
+/* Handle map entry
+ */
+#pragma pack(2)
+typedef struct _HMAP { /* hm */
+ struct _HMAP *phmNext; // pointer to next hmap entry
+ HANDLE h32; // 32-bit handle
+ HAND16 h16; // 16-bit handle
+ HTASK16 htask16; // 16-bit handle of owning task
+ INT iClass; // WOW class index
+ DWORD dwStyle; // style flags (if handle to window)
+ PWCD pwcd; // WOW class data pointer
+ VPWNDPROC vpfnWndProc; // associated 16-bit function address
+ VPWNDPROC vpfnDlgProc; // 16-bit dialog function
+} HMAP, *PHMAP, **PPHMAP;
+#pragma pack()
+
+
+/* Handle alias info
+ */
+typedef struct _HINFO { /* hi */
+ PPHMAP pphmHash; // address of hash table
+#ifdef NEWALIAS
+ PPHMAP pphmAlias; // address of alias table
+ INT nAliasEntries; // size of alias table, in entries
+ INT iAliasHint; // next (possibly) free slot in alias table
+#endif
+} HINFO, *PHINFO, **PPHINFO;
+
+
+PHMAP FindHMap32(HAND32 h32, PHINFO phi, INT iClass);
+PHMAP FindHMap16(HAND16 h16, PHINFO phi);
+VOID FreeHMap16(HAND16 h16, PHINFO phi);
+PSZ GetHMapNameM(PHINFO phi, INT iClass);