/*++

Copyright (c) 1998-2001 Microsoft Corporation

Module Name:

    conn.c

Abstract:

    Dumps UL_CONNECTION and HTTP_CONNECTION structures.

Author:

    Keith Moore (keithmo) 26-Jun-1998

Environment:

    User Mode.

Revision History:

--*/


#include "precomp.h"


//
// Public functions.
//

DECLARE_API( ulconn )

/*++

Routine Description:

    Dumps UL_CONNECTION structures.

Arguments:

    None.

Return Value:

    None.

--*/
{

    ULONG_PTR address = 0;
    ULONG result;
    UL_CONNECTION connection;

    SNAPSHOT_EXTENSION_DATA();

    //
    // Snag the address from the command line.
    //

    address = GetExpression( args );

    if (address == 0)
    {
        PrintUsage( "ulconn" );
        return;
    }

    //
    // Read the connection.
    //

    if (!ReadMemory(
            address,
            &connection,
            sizeof(connection),
            &result
            ))
    {
        dprintf(
            "ulconn: cannot read UL_CONNECTION @ %p\n",
            address
            );
        return;
    }

    //
    // Dump it.
    //

    DumpUlConnection(
        "",
        "ulconn: ",
        address,
        &connection
        );

}   // ulconn


DECLARE_API( httpconn )

/*++

Routine Description:

    Dumps HTTP_CONNECTION structures.

Arguments:

    None.

Return Value:

    None.

--*/

{

    ULONG_PTR address = 0;
    ULONG result;
    UL_HTTP_CONNECTION connection;

    SNAPSHOT_EXTENSION_DATA();

    //
    // Snag the address from the command line.
    //

    address = GetExpression( args );

    if (address == 0)
    {
        PrintUsage( "httpconn" );
        return;
    }

    //
    // Read the connection.
    //

    if (!ReadMemory(
            address,
            &connection,
            sizeof(connection),
            &result
            ))
    {
        dprintf(
            "httpconn: cannot read HTTP_CONNECTION @ %p\n",
            address
            );
        return;
    }

    //
    // Dump it.
    //

    DumpHttpConnection(
        "",
        "httpconn: ",
        address,
        &connection
        );

}   // httpconn


DECLARE_API( httpreq )

/*++

Routine Description:

    Dumps UL_INTERNAL_REQUEST structures.

Arguments:

    None.

Return Value:

    None.

--*/

{

    ULONG_PTR address = 0;
    ULONG result;
    UL_INTERNAL_REQUEST request;

    SNAPSHOT_EXTENSION_DATA();

    //
    // Snag the address from the command line.
    //

    address = GetExpression( args );

    if (address == 0)
    {
        PrintUsage( "httpreq" );
        return;
    }

    //
    // Read the connection.
    //

    if (!ReadMemory(
            address,
            &request,
            sizeof(request),
            &result
            ))
    {
        dprintf(
            "httpreq: cannot read HTTP_REQUEST @ %p\n",
            address
            );
        return;
    }

    //
    // Dump it.
    //

    DumpHttpRequest(
        "",
        "httpreq: ",
        address,
        &request
        );

}   // httpreq