/*++

Copyright (c) 1996  Microsoft Corporation
All rights reserved.

Module Name:

    LsplData.cxx

Abstract:

    Specifies the indicies of the local spooler counters.

Author:

    Albert Ting (AlbertT)  19-Dec-1996
    Based on Gopher perf counter dll.

Revision History:

--*/

#include "precomp.hxx"
#pragma hdrstop

#include "lsplctr.h"
#include "lspldata.hxx"

#ifdef OFFSETOF
#undef OFFSETOF
#endif

#define OFFSETOF(type, id) ((DWORD)(ULONG_PTR)(&(((type*)0)->id)))

LSPL_DATA_DEFINITION LsplDataDefinition =
{
    {
        sizeof( LSPL_DATA_DEFINITION ) + sizeof( LSPL_COUNTER_DATA ),
        sizeof( LSPL_DATA_DEFINITION ),

        sizeof( PERF_OBJECT_TYPE ),
        LSPL_COUNTER_OBJECT,
        0,
        LSPL_COUNTER_OBJECT,
        0,
        PERF_DETAIL_NOVICE,
        NUMBER_OF_LSPL_COUNTERS,
        3,                          // Default is # jobs in queue.
        0,                          // Place holder for number of instances.
        0,
        { 0, 0 },
        { 0, 0 }
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_TOTAL_JOBS,
        0,
        LSPL_TOTAL_JOBS,
        0,
        -1,
        PERF_DETAIL_NOVICE,
        PERF_COUNTER_RAWCOUNT,
        sizeof( LARGE_INTEGER ),
        OFFSETOF( LSPL_COUNTER_DATA, liTotalJobs ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_TOTAL_BYTES,
        0,
        LSPL_TOTAL_BYTES,
        0,
        -5,
        PERF_DETAIL_ADVANCED,
        PERF_COUNTER_BULK_COUNT,
        sizeof( LARGE_INTEGER ),
        OFFSETOF( LSPL_COUNTER_DATA, liTotalBytes ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_TOTAL_PAGES_PRINTED,
        0,
        LSPL_TOTAL_PAGES_PRINTED,
        0,
        -1,
        PERF_DETAIL_NOVICE,
        PERF_COUNTER_RAWCOUNT,
        sizeof( LARGE_INTEGER ),
        OFFSETOF( LSPL_COUNTER_DATA, liTotalPagesPrinted ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_JOBS,
        0,
        LSPL_JOBS,
        0,
        0,
        PERF_DETAIL_NOVICE,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwJobs ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_REF,
        0,
        LSPL_REF,
        0,
        0,
        PERF_DETAIL_EXPERT,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwRef ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_MAX_REF,
        0,
        LSPL_MAX_REF,
        0,
        0,
        PERF_DETAIL_EXPERT,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwMaxRef ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_SPOOLING,
        0,
        LSPL_SPOOLING,
        0,
        0,
        PERF_DETAIL_ADVANCED,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwSpooling ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_MAX_SPOOLING,
        0,
        LSPL_MAX_SPOOLING,
        0,
        0,
        PERF_DETAIL_ADVANCED,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwMaxSpooling ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_ERROR_OUT_OF_PAPER,
        0,
        LSPL_ERROR_OUT_OF_PAPER,
        0,
        -1,
        PERF_DETAIL_ADVANCED,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwErrorOutOfPaper ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_ERROR_NOT_READY,
        0,
        LSPL_ERROR_NOT_READY,
        0,
        -1,
        PERF_DETAIL_ADVANCED,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwErrorNotReady ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_JOB_ERROR,
        0,
        LSPL_JOB_ERROR,
        0,
        -1,
        PERF_DETAIL_ADVANCED,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwJobError ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_ENUMERATE_NETWORK_PRINTERS,
        0,
        LSPL_ENUMERATE_NETWORK_PRINTERS,
        0,
        -1,
        PERF_DETAIL_WIZARD,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwEnumerateNetworkPrinters ),
    },
    {
        sizeof( PERF_COUNTER_DEFINITION ),
        LSPL_ADD_NET_PRINTERS,
        0,
        LSPL_ADD_NET_PRINTERS,
        0,
        -1,
        PERF_DETAIL_WIZARD,
        PERF_COUNTER_RAWCOUNT,
        sizeof( DWORD ),
        OFFSETOF( LSPL_COUNTER_DATA, dwAddNetPrinters ),
    }
};