#ifndef _WIN32K_CLASS_H
#define _WIN32K_CLASS_H
-#include <windows.h>
-#include <ddk/ntddk.h>
-#include <napi/win32.h>
-
#define IS_ATOM(x) \
(((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
typedef struct _WNDCLASS_OBJECT
{
UINT cbSize;
+ LONG refs; /* windows using this class (is 0 after class creation) */
UINT style;
WNDPROC lpfnWndProcA;
WNDPROC lpfnWndProcW;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
- PUNICODE_STRING lpszMenuName;
+ HMENU hMenu;
+ UNICODE_STRING lpszMenuName;
RTL_ATOM Atom;
HICON hIconSm;
BOOL Unicode;
- LIST_ENTRY ListEntry;
+ BOOL Global;
+ LIST_ENTRY ListEntry; /* linked into owning process */
PCHAR ExtraData;
} WNDCLASS_OBJECT, *PWNDCLASS_OBJECT;
NTSTATUS FASTCALL
CleanupClassImpl(VOID);
-NTSTATUS STDCALL
-ClassReferenceClassByName(PWNDCLASS_OBJECT *Class,
- LPCWSTR ClassName);
+void FASTCALL DestroyProcessClasses(PW32PROCESS Process );
-NTSTATUS FASTCALL
-ClassReferenceClassByAtom(PWNDCLASS_OBJECT *Class,
- RTL_ATOM ClassAtom);
+inline VOID FASTCALL
+ClassDerefObject(PWNDCLASS_OBJECT Class);
+
+inline VOID FASTCALL
+ClassRefObject(PWNDCLASS_OBJECT Class);
-NTSTATUS FASTCALL
-ClassReferenceClassByNameOrAtom(PWNDCLASS_OBJECT *Class,
- LPCWSTR ClassNameOrAtom);
PWNDCLASS_OBJECT FASTCALL
-IntCreateClass(CONST WNDCLASSEXW *lpwcx,
- BOOL bUnicodeClass,
- WNDPROC wpExtra,
- RTL_ATOM Atom);
+ClassGetClassByAtom(
+ RTL_ATOM Atom,
+ HINSTANCE hInstance);
+
+PWNDCLASS_OBJECT FASTCALL
+ClassGetClassByName(
+ LPCWSTR ClassName,
+ HINSTANCE hInstance);
+
+PWNDCLASS_OBJECT FASTCALL
+ClassGetClassByNameOrAtom(
+ LPCWSTR ClassNameOrAtom,
+ HINSTANCE hInstance);
+
struct _WINDOW_OBJECT;
ULONG FASTCALL
IntGetClassLong(struct _WINDOW_OBJECT *WindowObject, ULONG Offset, BOOL Ansi);