mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.3 KiB
97 lines
3.3 KiB
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Module Name: sde.h
|
|
//
|
|
// Abstract:
|
|
//
|
|
// Header file containing structs, definitions, function prototypes,
|
|
// etc. for the Cairo Shell32 ntsd debugger extensions
|
|
//
|
|
// Author:
|
|
//
|
|
// Steve Cathcart (SteveCat) 20-Feb-1995 Created
|
|
//
|
|
// Revision History:
|
|
//
|
|
//
|
|
//
|
|
// Copyright (c) 1995 Microsoft Corporation
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Get global header files
|
|
//
|
|
|
|
#include <shellprv.h>
|
|
|
|
#include <imagehlp.h>
|
|
|
|
#include <wdbgexts.h>
|
|
|
|
//#include <ntsdexts.h>
|
|
|
|
|
|
#define PRINTF (* lpOutputRoutine)
|
|
#define EPRINTF if (lpExtensionApis->lpOutputRoutine) (*(lpExtensionApis->lpOutputRoutine))
|
|
|
|
#define ReadAnsiStr(x,y,z) read_ansi_string(lpExtensionApis,hCurrentProcess,(ULONG)x, (LPSTR)y, (ULONG)z)
|
|
#define ReadUnicodeStr(x,y,z) read_unicode_string(lpExtensionApis,hCurrentProcess,(ULONG)x, (LPWSTR)y, (ULONG)z)
|
|
#define ReadStruct(x,y,z) read_struct(lpExtensionApis,hCurrentProcess,(ULONG)x, (PVOID)y, (ULONG)z)
|
|
#define ReadDWord(x) read_dword(lpExtensionApis,hCurrentProcess,(ULONG)x)
|
|
#define ReadLong(x) read_long(lpExtensionApis,hCurrentProcess,(ULONG)x)
|
|
#define ReadWord(x) read_word(lpExtensionApis,hCurrentProcess,(ULONG)x)
|
|
#define ReadByte(x) read_byte(lpExtensionApis,hCurrentProcess,(ULONG)x)
|
|
|
|
#ifdef SAVE_THIS_FOR_LATER
|
|
#define ReadAnsiStrSafe(x,y,z) read_ansi_string(NULL,hCurrentProcess,(ULONG)x, (LPSTR)y, (ULONG)z)
|
|
#define ReadUnicodeStrSafe(x,y,z) read_unicode_string(NULL,hCurrentProcess,(ULONG)x, (LPWSTR)y, (ULONG)z)
|
|
#define ReadStructSafe(x,y,z) read_struct(NULL,hCurrentProcess,(ULONG)x, (PVOID)y, (ULONG)z)
|
|
#define ReadDWordSafe(x) read_dword(NULL,hCurrentProcess,(ULONG)x)
|
|
#define ReadLongSafe(x) read_long(NULL,hCurrentProcess,(ULONG)x)
|
|
#define ReadWordSafe(x) read_word(NULL,hCurrentProcess,(ULONG)x)
|
|
#define ReadByteSafe(x) read_byte(NULL,hCurrentProcess,(ULONG)x)
|
|
#else
|
|
#define ReadAnsiStrSafe ReadAnsiStr
|
|
#define ReadUnicodeStrSafe ReadUnicodeStr
|
|
#define ReadStructSafe ReadStruct
|
|
#define ReadDWordSafe ReadDword
|
|
#define ReadLongSafe ReadLong
|
|
#define ReadWordSafe ReadWord
|
|
#define ReadByteSafe ReadByte
|
|
#endif
|
|
|
|
|
|
typedef struct tagCPLAPPLETID
|
|
{
|
|
ATOM aCPL; // CPL name atom (so we can match requests)
|
|
ATOM aApplet; // applet name atom (so we can match requests, may be zero)
|
|
HWND hwndStub; // window for this dude (so we can switch to it)
|
|
UINT flags; // see PCPLIF_ flags below
|
|
} CPLAPPLETID;
|
|
|
|
// PCPLIF_DEFAULT_APPLET
|
|
// There are two ways of getting the default applet, asking for it my name
|
|
// and passing an empty applet name. This flag should be set regardless,
|
|
// so that the code which switches to an already-active applet can always
|
|
// find a previous instance if it exists.
|
|
#define PCPLIF_DEFAULT_APPLET (0x1)
|
|
|
|
#define APPLET_NAME_SIZE (ARRAYSIZE(((LPNEWCPLINFO)0)->szName)) // NB: size in chars, not bytes
|
|
|
|
typedef struct tagCPLEXECINFO
|
|
{
|
|
int icon;
|
|
TCHAR cpl[ CCHPATHMAX ];
|
|
TCHAR applet[ APPLET_NAME_SIZE ];
|
|
TCHAR *params;
|
|
} CPLEXECINFO;
|
|
|
|
|
|
typedef struct _KEY_NODE {
|
|
|
|
HKEY hKey;
|
|
LPTSTR lpName;
|
|
struct _KEY_NODE * next;
|
|
|
|
} KEY_NODE;
|