summaryrefslogblamecommitdiffstats
path: root/private/ntos/ndis/ndiswan/kdexts/wanhelp.c
blob: e2c8b0c0c89a18d9eeb9142fba4428254308f562 (plain) (tree)






















































































































































































                                                                                                      
/*++

Copyright (c) 1993  Microsoft Corporation

Module Name:

    kdexts.c

Abstract:

    This file contains the generic routines and initialization code
    for the kernel debugger extensions dll.

Author:


Environment:

    User Mode

--*/

#include <wanhelp.h>

//
// globals
//
EXT_API_VERSION        	ApiVersion = { 3, 5, EXT_API_VERSION_NUMBER, 0 };
WINDBG_EXTENSION_APIS  	ExtensionApis;
ULONG                  	STeip;
ULONG                  	STebp;
ULONG                  	STesp;
USHORT                 	SavedMajorVersion;
USHORT					SavedMinorVersion;
VOID	UnicodeToAnsi(PWSTR	pws,PSTR ps, ULONG cbLength);
CHAR	Name[1024];

PSTR	gApiDescriptions[] =
{
    "help             - What do you think your reading?\n",
    "ndiswancb        - Dump the contents of the main NdisWan control structure\n",
	"enumwanadaptercb - Dump the head of the WanAdapterCB list\n",
	"wanadaptercb     - Dump the contents of a Wan Miniport Adapter structure\n",
	"enumadaptercb    - Dump the head of the AdapterCB list\n",
	"adaptercb        - Dump the contents of a NdisWan Adapter structure\n",
	"connectiontable  - Dump the connetion table\n",
	"bundlecb         - Dump the bundlecb\n",
	"linkcb           - Dump the linkcb\n",
	"protocolcb       - Dump the protocolcb\n",
	"wanpacket        - Dump the wanpacket\n",
	"ndispacket       - Dump the ndispacket\n",
};

#define MAX_APIS 12

//
// THESE ARE NEEDED FOR THE KDEXT DLLs
//
BOOLEAN
DllInit(
    HANDLE hModule,
    DWORD  dwReason,
    DWORD  dwReserved
    )
{
    switch (dwReason) {
		case DLL_THREAD_ATTACH:
			DbgBreakPoint();
            break;

        case DLL_THREAD_DETACH:
            break;

        case DLL_PROCESS_DETACH:
            break;

        case DLL_PROCESS_ATTACH:
            break;
    }

    return TRUE;
}


//
// THESE ARE NEEDED FOR THE KDEXT DLLs
//
VOID
WinDbgExtensionDllInit(
    PWINDBG_EXTENSION_APIS lpExtensionApis,
    USHORT MajorVersion,
    USHORT MinorVersion
    )
{
    ExtensionApis = *lpExtensionApis;

    SavedMajorVersion = MajorVersion;
    SavedMinorVersion = MinorVersion;

    return;
}

//
// THESE ARE NEEDED FOR THE KDEXT DLLs
//
DECLARE_API( version )
{
#if DBG
    PCHAR DebuggerType = "Checked";
#else
    PCHAR DebuggerType = "Free";
#endif

    dprintf( "%s Extension dll for Build %d debugging %s kernel for Build %d\n",
             DebuggerType,
             VER_PRODUCTBUILD,
             SavedMajorVersion == 0x0c ? "Checked" : "Free",
             SavedMinorVersion
           );
}

//
// THESE ARE NEEDED FOR THE KDEXT DLLs
//
VOID
CheckVersion(
    VOID
    )
{
#if DBG
    if ((SavedMajorVersion != 0x0c) || (SavedMinorVersion != VER_PRODUCTBUILD)) {
        dprintf("\r\n*** Extension DLL(%d Checked) does not match target system(%d %s)\r\n\r\n",
                VER_PRODUCTBUILD, SavedMinorVersion, (SavedMajorVersion==0x0f) ? "Free" : "Checked" );
    }
#else
    if ((SavedMajorVersion != 0x0f) || (SavedMinorVersion != VER_PRODUCTBUILD)) {
        dprintf("\r\n*** Extension DLL(%d Free) does not match target system(%d %s)\r\n\r\n",
                VER_PRODUCTBUILD, SavedMinorVersion, (SavedMajorVersion==0x0f) ? "Free" : "Checked" );
    }
#endif
}

LPEXT_API_VERSION
ExtensionApiVersion(
    VOID
    )
{
    return &ApiVersion;
}

/*++
   Try and keep an accurate list of commands.
--*/
DECLARE_API(help)
{
   UINT  c;

	if (0 == args[0]) {
		for (c = 0; c < MAX_APIS; c++)
			dprintf(gApiDescriptions[c]);
		return;
	}
}

VOID
UnicodeToAnsi(
	PWSTR	pws,
	PSTR	ps,
	ULONG	cbLength
	)
{
	PSTR	Dest = ps;
	PWSTR	Src = pws;
	ULONG	Length = cbLength;

	dprintf("Enter UnicodeToAnsi\n");

	while (Length--) {
		*Dest++ = (CHAR)*Src++;
	}

	dprintf("Exit UnicodeToAnsi\n");
}