Re: Process dump facility public API - pdpublic.h



Here's the header. Just assume it has the same license as the rest of the OS/2 Toolkit.

------cut here-----------
/************************* Module Header *******************************\
* *
* Module Name: PDPUBLIC.H (new file for 180062) *
* *
* Process Dump public interface for DosDumpProcess API *
* *
* Copyright (c) International Business Machines Corporation 1997 *
************************************************************************
* Change * *
* Activity Date BY Reason *
* -------- ---- ---------- *
* 180062 09/01/97 LRN New for DosDumpProcess and *
* DosQueryRasInfo enhancements *
\***********************************************************************/

//XLATOFF
#ifndef __PDPUBLIC__
#define __PDPUBLIC__

#pragma pack(1)

/* The following are the error return codes for DosDumpProcess */

#define ERROR_INVALID_PATHNAME 70000
#define ERROR_INVALID_PROCESSNAME 70001
#define ERROR_INVALID_ADDRRANGE 70002
#define ERROR_INVALID_SYSTEM_OPTIONS 70003
#define ERROR_INVALID_USER_OPTIONS 70004
#define ERROR_OUT_OF_FREESPACE 70005
#define ERROR_INVALID_PARAMETERS 70006
#define ERROR_UPDATE_FAILED 70007
#define ERROR_DATA_NOT_DISPLAYED 70008
#define ERROR_INVALID_LOCATION 70009
#define ERROR_INVALID_PID 70010
#define ERROR_INVALID_PROCESS 70011
#define ERROR_INVALID_NUMBER 70012
#define ERROR_PDUMP_NOT_ENABLED 70013
#define ERROR_NO_PROCESSES_FOUND 70014
#define ERROR_INTERNAL_ERROR 70015
#define ERROR_INVALID_FREESPACE 70016
#define ERROR_DUPLICATE_PARAMETER 70017
#define ERROR_NOTVALID_IN_CONFIGSYS 70018
#define ERROR_INVALID_PARENTS 70019
#define ERROR_INVALID_CHILDREN 70020
#define ERROR_INVALID_KILL 70021
#define ERROR_INVALID_UPDATE_OPTION 70022
#define ERROR_INVALID_DO_PARAMETER 70023
#define ERROR_INVALID_DO_PD_COMBINATION 70024
#define ERROR_CANT_OPEN_DUMP_FILE 70025 /* drive or directory invalid */
#define ERROR_INVALID_PADDRALL 70026

#define PACKET_DDPREQUEST_REV 1 /* 1st revision */

typedef struct _DDPREQUEST {
ULONG packet_size; /* Size (in bytes) of this packet */
ULONG packet_revision_number; /* PACKET_DDPREQUEST_REV */
ULONG flags; /* See DDPREQUEST flags below */
PSZ pPathName; /* Ptr to drive letter or pathname
Null terminated. */
ULONG FreeSpace; /* Amount (in KB) of free space that
should remain on drive after
dump is complete. */
struct _PDOPTIONS *pSystemDefaults; /* Ptr to System Defaults struct */
struct _PDOPTIONS *pUserDefaults; /* Ptr to User Defaults struct */
struct _PDPROCESS *pProcessInfo; /* Ptr to linked list of structures
which describe what to
dump for particular
process(es)*/
ULONG NumberofProcesses; /* Number of processes in the
linked list pointed to by
pProcessInfo. Only specified
when pProcessInfo non-null. */
} DDPREQUEST;
typedef DDPREQUEST *PDDREQUEST;


/* Defines for Flag field (first param on DosDumpProcess). These are
mutually exclusive. */
#define DDP_DISABLEPROCDUMP 0x00000000L /* Disable PD facility */
#define DDP_ENABLEPROCDUMP 0x00000001L /* Enable PD facility */
#define DDP_PERFORMPROCDUMP 0x00000002L /* Force a PD dump */
#define DDP_DDPREQUEST 0x10000000L /* New type request */


/* Defines for DDPREQUEST flags (flags field within DDPREQUEST structure */
/* DDP_DISABLEPROCDUMP, DDP_ENABLEPROCDUMP and DDP_PERFORMPROCDUMP can
also be specified in the DDPREQUEST flags. */
/*#define DDP_ENABLEPROCDUMP 0x00000001L*//* Enable PD facility...mutually
exclusive with other DDP flags
except for DDP_CHANGE_FREESPACE.
Can specify pPathName and/or
FreeSpace (nulls will use
defaults). To specify
zero for FreeSpace, specify
DDP_CHANGE_FREESPACE. */
/*#define DDP_PERFORMPROCDUMP 0x00000002L*/ /* Force a PD dump...mutually
exclusive with other DDP flags.
Must specify pProcessInfo and
NumberOfProcesses. */
#define DDP_SETOPTIONS 0x00000010L /* Set options...mutually
exclusive with other DDP flags
except for DDP_CHANGE_FREESPACE.
Used for: pPathName, FreeSpace,
pSystemDefaults, pUserDefaults,

pProcessInfo/NumberOfProcesses.
Specify null/zeros for options
you do not want to set. To set
zero for FreeSpace, specify
DDP_CHANGE_FREESPACE. */
#define DDP_REQDISABLEPROCDUMP 0x00000020L /* Disable PD facility...mutually
exclusive with other DDP flags */

/* Any combination of these "RESET" flags which follow can be set together,
but none of the following can be set when DDP_SETOPTIONS is specified. */
#define DDP_RESETSYSTEMDEFAULTS 0x00000040L /* Reset System defaults */
#define DDP_RESETUSERDEFAULTS 0x00000080L /* Reset User defaults */
#define DDP_RESETPATHNAME 0x00000100L /* Reset Pathname */
#define DDP_RESETFREESPACE 0x00000200L /* Reset Free Space */
#define DDP_RESETPROCESS 0x00000400L /* Reset Process (by name or PID) */

/* The following flag can only be used when set with DDP_ENABLEPROCDUMP and
* DDP_SETOPTIONS. The value passed in FreeSpace (even if zero) will be used.
* This is needed because 0 is a valid value and we need to distinguish whether
* the requestor really means 0 or didn't want to change it. */
#define DDP_CHANGE_FREESPACE 0x00001000L

/* Mask of reserved flags (not valid for flags field within DDPREQUEST structure) */
#define DDP_RESERVED_FLAGS 0xFFFFE80CL

#define PACKET_PDOPTIONS_REV 1 /* 1st revision */

typedef struct _PDOPTIONS {
ULONG packet_size; /* Size (in bytes) of this packet */
ULONG packet_revision_number; /* PACKET_PDOPTIONS_REV */
ULONG process_flags; /* See PDOPTIONS process flags below.*/
ULONG system_flags; /* See PDOPTIONS system flags below. */
struct _PDADDRRANGE *pLAddrRanges; /* Ptr to list of linear address
ranges to dump. */
ULONG NumberofLAddrRanges; /* Number of LAddrRanges. */
struct _PDADDRRANGE *pPAddrRanges; /* Ptr to list of physical address
ranges to dump. */
ULONG NumberofPAddrRanges; /* Number of PAddrRanges. */
ULONG options_flags;
} PDOPTIONS;

typedef PDOPTIONS *PPDOPTIONS;

/* PDOPTIONS options_flags field */
#define PDO_UPDATEOPTIONS 0x00000001 /* Update/merge options. This flag
is only valid when updating
system and user defaults
(pSystemDefaults and pUserDefaults).*/


//XLATON
#define DDP_NONE 0x00000000 /* No bits set. */
/* PDOPTIONS process flags -- flags with a process-wide scope */
#define DDP_SUMM 0x00000001 /* Summary data */
#define DDP_PRIVATE 0x00000100 /* Process private data */
#define DDP_SHARED 0x00000200 /* Shared data for process */
#define DDP_INSTANCE 0x00000400 /* Instance data for process */
#define DDP_MVDM 0x00000800 /* MVDM data */
#define DDP_SEM 0x00001000 /* Process semaphore data */
#define DDP_USER_DEFAULTS 0x40000000 /* Include user default data */

/* Reserved process flags */
#define DDP_RESERVED_PROCESS 0xBFFFE0FE

/* PDOPTIONS system flags -- flags with a system-wide scope */
#define DDP_SYSSUMM DDP_SUMM /* System summary data */
#define DDP_IDT 0x00000004 /* IDT*/
#define DDP_SYSLDR 0x00000010 /* System loader data */
#define DDP_SYSFS 0x00000020 /* System file system loader data */
#define DDP_SYSVM 0x00000040 /* System virtual memory data */
#define DDP_SYSTK 0x00000080 /* System tasking data */
#define DDP_SYSMVDM DDP_MVDM /* System MVDM data */
#define DDP_SYSSEM DDP_SEM /* System semaphore data */
#define DDP_KRHEAPS 0x00002000 /* System kernel resident heap */
#define DDP_KSHEAPS 0x00004000 /* System kernel swappable heap */
#define DDP_TRACE 0x00008000 /* System trace data */
#define DDP_STRACE 0x00010000 /* System software trace data */
#define DDP_SMP 0x00020000 /* System SMP data */
#define DDP_SYSIO 0x00040000 /* System I/O data */
#define DDP_SYSPG 0x00080000 /* System paging data */
#define DDP_SYSTEM_DEFAULTS 0x20000000 /* Include system default data */
#define DDP_PADDRALL 0x80000000 /* All physical memory PADDR(ALL) */

//XLATOFF

/* Reserved system flags */
#define DDP_RESERVED_SYSTEM 0x5FF0070A

/* PDUMPSYS defaults. */
#define DDP_SYS_PROC_DEFAULTS DDP_NONE /* process_flags */
#define DDP_SYS_SYSTEM_DEFAULTS DDP_SMP + DDP_SYSSUMM + DDP_IDT + DDP_SYSFS + \
DDP_SYSVM + DDP_SYSSEM + DDP_SYSPG + DDP_SYSIO + \
DDP_TRACE + DDP_STRACE + \
DDP_SYSTK /* system_flags */
/* PDUMPUSR defaults. */
#define DDP_USR_PROC_DEFAULTS DDP_SUMM + \
DDP_MVDM + DDP_SEM /* process_flags */
#define DDP_USR_SYSTEM_DEFAULTS DDP_SYSFS /* system_flags */

/* Flags set when "ALL" keyword is specified */
#define DDP_ALL_PROCESS DDP_SUMM + DDP_PRIVATE + DDP_SHARED + \
DDP_INSTANCE + DDP_MVDM + DDP_SEM
#define DDP_ALL_SYSTEM DDP_SYSSUMM + DDP_IDT + DDP_SYSLDR + \
DDP_SYSFS + DDP_SYSVM + DDP_SYSTK + \
DDP_SYSMVDM + DDP_SYSSEM + DDP_KRHEAPS + \
DDP_KSHEAPS + DDP_TRACE + DDP_STRACE + \
DDP_SMP + DDP_SYSIO + DDP_SYSPG

/* PDUNION is used in both the PDPROCESS and PDPROCESS2 structures. */
union _PDUNION {
PID ProcId; /* Process ID. */
PSZ pProcessName; /* Ptr to a process name that can
either be a short name or a
qualified name(w/extension).
Can also have extension of ".DLL"
to dump all processes using the
DLL. Must be null terminated. */
};

#define PACKET_PDPROCESS_REV 1 /* 1st revision */

typedef struct _PDPROCESS {
ULONG packet_size; /* Size (in bytes) of this packet */
ULONG packet_revision_number; /* PACKET_PDPROCESS_REV */
ULONG flags; /* See PDPROCESS flags below. */
union _PDUNION Proc;
struct _PDOPTIONS *pOptions; /* Pointer to dump options. */
ULONG Children; /* See "Children values" below. */
ULONG Parents; /* See "Parent values" below. */
ULONG Kill; /* See "Kill values" below. */
struct _PDPROCESS2 *pIncludeProcess; /* Ptr to structure of associated
process(es) to include when this
process is dumped. */
struct _PDPROCESS *pPDProcessNext; /* Ptr to next in linked list */
} PDPROCESS;
typedef PDPROCESS *PPDPROCESS;

/* PDPROCESS flags */
#define PDP_ALLPIDS 0x00000001 /* Dump all active processes.
This is only valid when you are doing
a force (DDP_PERFORMPROCDUMP).
Not a valid flag for PDPROCESS2. */
#define PDP_PROCID 0x00000002 /* Structure contains a ProcId. Flag is
mutually exclusive with PDP_PROCNAME. */
#define PDP_PROCNAME 0x00000004 /* Struct contains a pProcessName. Flag
is mutually exclusive with PDP_PROCID.*/
#define PDP_UPDATEOPTIONS 0x00000008 /* Update/merge options with any
existing options. */
/* Reserved PDProcess flags */
#define PDP_RESERVED_FLAGS 0xFFFFFFF0

/* Reserved PDProcess2 flags */
#define PDP_RESERVED_FLAGS2 0xFFFFFFF1

/* The following PDPROCESS flags are for system use only. They
should not be specified on an API request. These flags are not valid
for PDPROCESS2. */
#define PDP_HOTKEY 0x08000000 /* Hotkey. PDP_PROCID should also be set.*/
#define PDP_TRAP0 0x10000000 /* Ring 0 trap. */
#define PDP_TRAP3 0x20000000 /* Ring 3 (or ring 2) trap. */
#define PDP_REQ 0x40000000 /* Set by PLD_DeterminePids when request
list does not have PDP_TEMP set. */
#define PDP_TEMP 0x80000000 /* This is a temporary structure which is not
pointed to by the pPDProcessHeadCurrent
pointer. It is used with 'force' and
contains options to use when dumping. */
#define PDP_TRAP PDP_TRAP0 + PDP_TRAP3
#define PDP_SYS_MASK PDP_HOTKEY + PDP_TRAP + PDP_REQ + PDP_TEMP

/* Children values -- these are mutually exclusive */
#define CHILDREN_NONE 0x00000001 /* No children will be dumped (default)*/
#define CHILDREN_ONLY 0x00000002 /* Direct children of the process(es)
will be dumped. */
#define CHILDREN_GRAND 0x00000003 /* Children and grandchildren
of the process(es) will be
dumped. */
#define CHILDREN_ALL 0x00000004 /* All children and children of
children will be dumped. */
/* Values used in validating Children */
#define CHILDREN_FIRST CHILDREN_NONE
#define CHILDREN_LAST CHILDREN_ALL

/* PARENT values -- these are mutually exclusive */
#define PARENTS_NONE 0x00000001 /* No parents will be dumped (default)*/
#define PARENTS_ONLY 0x00000002 /* Direct parent(s) of process(es)
will be dumped. */
#define PARENTS_GRAND 0x00000003 /* Parents and grandparents
of the process(es) will be
dumped.*/
#define PARENTS_ALL 0x00000004 /* All parents and parents of parents
will be dumped. */
/* Values used in validating Parents */
#define PARENTS_FIRST PARENTS_NONE
#define PARENTS_LAST PARENTS_ALL

/* KILL values -- these are mutually exclusive */
#define KILL_YES 0x00000001 /* Kill the process(es). */
#define KILL_NO 0x00000002 /* Do not kill process(es). */

#define PACKET_PDPROCESS2_REV 1 /* 1st revision */

typedef struct _PDPROCESS2 {
ULONG packet_size; /* Size (in bytes) of this packet */
ULONG packet_revision_number; /* PACKET_PDPROCESS2_REV */
ULONG flags; /* See PDPROCESS flags above. Valid
flags within PDPROCESS2 are:
PDP_PROCID, PDP_PROCNAME, and
PDP_UPDATEOPTIONS. */
union _PDUNION Proc;
struct _PDOPTIONS *pOptions; /* Pointer to dump options. */
ULONG Children; /* See "Children values" above. */
ULONG Parents; /* See "Parent values" above. */
ULONG Kill; /* See "Kill values" above. */
ULONG DataOption; /* See "DataOption values" below. */
struct _PDPROCESS2 *pIncludeProcess; /* Ptr to next element of
linked list. */
} PDPROCESS2;
typedef PDPROCESS2 *PPDPROCESS2;

/* DataOption values -- these are mutually exclusive */
#define DATA_PREVIOUS 0x00000001 /* Use data previously attached to
this process. */
#define DATA_PRIMARY 0x00000002 /* Dump same data as primary process */
#define DATA_SPECIFIED 0x00000003 /* Data is specified in this
structure (Options field). */
#define DATA_DEFAULTS 0x00000004 /* Use defaults. */

/* Values used in validating DataOption */
#define DATA_FIRST DATA_PREVIOUS
#define DATA_LAST DATA_DEFAULTS


typedef struct _PDADDRRANGE { /* Address ranges to dump */
ULONG StartAddr; /* Start of range */
ULONG EndAddr; /* End of range (inclusive) */
} PDADDRRANGE;
typedef PDADDRRANGE *PPDADDRRANGE;



/* The following structures are used by the DosQueryRASInfo API */

#define PACKET_DQRIREQUEST_REV 1 /* 1st revision */
#define DQRI_DQRIREQUEST 0x10000000L /* New Style request indicator */

typedef struct _DQRIREQUEST {
ULONG packet_size; /* Size (in bytes) of this packet */
ULONG packet_revision_number; /* PACKET_DQRIREQUEST_REV */
ULONG flags; /* See DQRIREQUEST flags below */
ULONG buffer_size; /* Buffer size */
PBYTE buffer; /* Pointer to the buffer that will hold
the returned information */
struct _DQRITRACE *pTrace; /* Ptr to System Trace info */
struct _DQRIPDUMP *pPdump; /* Ptr to PDUMP info */
struct _DQRISTRACE *pSTrace; /* Ptr to STrace info */
struct _DQRISDUMP *pSdump; /* Ptr to System Dump info */
} DQRIREQUEST;
typedef DQRIREQUEST *PDQRIREQUEST;

/* Defines for DQRIREQUEST flags */
#define SYSTRACE_QUERY 0x00000001L /* Query the System Trace facility */
#define PDUMP_QUERY 0x00000002L /* Query the PDUMP facility */
#define STRACE_QUERY 0x00000004L /* Query the STRACE facility */
#define SDUMP_QUERY 0x00000008L /* Query the System Dump facility */

/* Mask of reserved flags */
#define DQRI_RESERVED_FLAGS 0xFFFFFFF0L


typedef struct _DQRITRACE {
UCHAR flags1; /* See DQRITRACE flags1 below */
UCHAR flags2; /* See DQRITRACE flags2 below */
USHORT number_of_pids; /* Number of Pids in pPids, if tracing by PID */
ULONG optional_data_flags; /* See DQRITRACE Optional data flags below */
PBYTE addr; /* Ptr to System Trace buffer */
ULONG system_trace_buffer_size; /* Size of the Trace buffer */
struct _DQRIMAJORMINOR *pMajorMinor; /* Ptr to the Static Tracepoints */
struct _DQRIDYNAMIC *pDynamic; /* Ptr to Dynamic tracepoints */
PID *pPids; /* Ptr to list of Pids if tracing by PID */
struct _DQRINAMES *pNames; /* Ptr to the names defined as being traced */
} DQRITRACE;
typedef DQRITRACE *PDQRITRACE;

/* Defines for DQRITRACE flags1 */
/* These are defined in trcxport.h */
/* GST_TRCAVAIL 0x80 Not Busy */
/* GST_TRCPAUSED 0x40 Paused */
/* GST_TRCPID 0x20 bit set = Trace by PID */
/* bit reset = Trace by all PIDs */
/* GST_TRCERRCOUNT 0x10 Trace until error count reached */
/* GST_TRCSUSPEND 0x08 Trace suspended */
/* GST_TRCMINORCD 0x04 Trace by Minor code */
/* GST_TRCSYSDATA 0x02 Record optional data */
/* GST_TRCNOWRAP 0x01 Non Wrapping buffer */

/* Defines for DQRITRACE flags2 */
/* These are defined in trxxport.h */
/* GST_QUEUED 0x01 Queued Mode */
/* GST_DYNBYPASSIPI 0x02 Bypass Inter Processor */

/* Defines for DQRITRACE Optional Data flags */
/* These flags are defined in trcxport.h */
/* GST_SYSDATA_TID 0X00000020L Thread ID */
/* GST_SYSDATA_SLOT 0X00000040L Thread SLOT */
/* GST_SYSDATA_CSEIP 0X00010000L Caller's CS:EIP */
/* GST_SYSDATA_MODNAME 0X00000080L Module name */
/* GST_SYSDATA_SSESP 0X00020000L Caller's SS:ESP */
/* GST_SYSDATA_PROCID 0X00000001L Processor ID */
/* GST_SYSDATA_TSC 0X00000400L Pentium High Resolution Time-Stamp Counter */
/* GST_SYSDATA_PROCNAME 0X00000100L Short name of caller */
/* GST_SYSDATA_MAJOR 0X00000002L Extended Major code */


typedef struct _DQRIMAJORMINOR {
ULONG major_code; /* Major Code - NOT USED if
in the Dynamic tracepoint structure */
ULONG first_minor_code; /* First minor code in range */
ULONG last_minor_code; /* Last minor code in range */
struct _DQRIMAJORMINOR *pMajorMinorNext; /* Ptr to next record */
} DQRIMAJORMINOR;
typedef DQRIMAJORMINOR *PDQRIMAJORMINOR;

typedef struct _DQRIDYNAMIC {
CHAR module_name[9]; /* Name of the Module (null terminated)*/
struct _DQRIDYNAMIC *pDynamicNext; /* Ptr to next record */
struct _DQRIMAJORMINOR *pMajorMinorNext; /* Ptr to Major/Minor
codes for this module */
} DQRIDYNAMIC;
typedef DQRIDYNAMIC *PDQRIDYNAMIC;

typedef struct _DQRINAMES {
char *pName; /* Ptr to the name (null terminated string) */
struct _DQRINAMES *pNamesNext; /* Ptr to next record */
} DQRINAMES;
typedef DQRINAMES *PDQRINAMES;


typedef struct _DQRIPDUMP {
ULONG flags; /* See DQRIPDUMP flags below */
PSZ pPathName; /* Ptr to drive letter or pathname
Null terminated. */
ULONG FreeSpace; /* Amount (in KB) of free space that
should remain on drive after
dump is complete. */
struct _PDOPTIONS *pSystemDefaults; /* Ptr to System Defaults struct */
struct _PDOPTIONS *pUserDefaults; /* Ptr to User Defaults struct */
struct _PDPROCESS *pProcessInfo; /* Ptr to linked list of structures
which describe what to
dump for particular
process(es)*/
} DQRIPDUMP;
typedef DQRIPDUMP *PDQRIPDUMP;

/* Defines for DQRIPDUMP flags */
#define DQRI_DISABLEPROCDUMP 0x00000000L /* Disabled PD facility */
#define DQRI_ENABLEPROCDUMP 0x00000001L /* Enabled PD facility */


typedef struct _DQRISTRACE {
PPVOID addr; /* Pointer to STrace buffer */
ULONG Strace_buffer_size; /* Size of the Trace buffer */
ULONG Reserved1; /* Reserved for later use */
} DQRISTRACE;
typedef DQRITRACE *PDQRISTRACE;


typedef struct _DQRISDUMP {
CHAR dump_type; /* System dump information */
CHAR dump_location; /* Where the dump will be placed. */
CHAR additional_features; /* Options available in the facility */
CHAR Reserved1; /* Reserved for later use */
ULONG kernel_data_flags; /* Special data to be collected */
} DQRISDUMP;
typedef DQRISDUMP *PDQRISDUMP;

/* Values for dump_type */
#define SDD_OFF 0 /* System Dump is disabled */
#define SDD_ON 1 /* System Dump is enabled */
#define SDD_R0 2 /* System Dump is enabled for Ring 0 */

/* Value for kernel_data_flags */
#define OTE_ON 0x00000001L /* RASKDATA command */

/* Values for additional_feature */
/* The following are defines in module pldinfo.h */
/*#define PLD_TAKE_SYSDUMP 0*/ /* Value for PDDumpSequence (default) */
/*#define PLD_TAKE_PROCDUMP 1*/ /* Value for PDDumpSequence */


/* These structures are used by the registered device driver for process dump*/
typedef struct _DDREPEAT {
ULONG ulLinear; /* Linear address if non-zero.
Physical address if zero. */
ULONG pid; /* Zero if physical addresses.
Non-zero if linear addresses. */
ULONG ulStartAddr; /* Starting address. */
ULONG ulLength; /* Length of data. */
} DDREPEAT;
typedef DDREPEAT *PDDREPEAT;

typedef struct _DDRANGES {
ULONG NumberOfEntries; /* # Entries in this structure. */
DDREPEAT Repeat; /* This section repeats
NumberOfEntries times. */
} DDRANGES;

typedef DDRANGES *PDDRANGES;

/* PLDMAXDIRNAME is the maximum size of a directory name */
/* To this directory name, we need to allow room to concatenate the filename */
/* and the extension and the null terminator. */
/* Note: 260 is size of CCHMAXPATH defined in bsedos.h */
#define PLDMAXDIRNAME 260 - PLD_DUMPNAME_LENGTH
#define PLD_DUMPNAME_LENGTH 11 // Length of "\PDUMP.xxx" plus null

#pragma pack()

#endif
.



Relevant Pages

  • Re: Setfocus / killfocus on cbutton
    ... Because it is a static struct, declared at the global scope level in this compilation ... syntax change is minor, and the effect is the same. ... build other button tables for other dialogs, you would put this typedef in another header ... declaration as well as if I try to add some class variables ...
    (microsoft.public.vc.mfc)
  • Re: advantage of using typedefs
    ... The underlying problem / solution here is "abstraction". ... struct, ... possible to call this with a length or pressure measurement by ... typedef double temperature; ...
    (comp.lang.c)
  • Re: syntax errror
    ... >>> int maxGrey' ... >> declaration of maxGrey. ... typedef double; ... struct some_tag_name { ...
    (comp.lang.c)
  • Re: question about struct??
    ... It is not the "typedef" keyword that defines the type. ... is the "struct {" pair that does it: ... struct S {int a; int b;}; ...
    (comp.lang.c)
  • [git patches] IDE updates part 3
    ... The previous IDE update is in the mainline and there is also -git9 ... add struct ide_port_ops ... skip DMA initialization completely on revs < 0x20 ... unsigned long flags; ...
    (Linux-Kernel)