1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _INC_NDATTRIB
7#define _INC_NDATTRIB
8
9#if (_WIN32_WINNT >= 0x0600)
10
11/* In ndhelper.idl
12typedef struct tagDIAG_SOCKADDR {
13  USHORT family;
14  CHAR   data[126];
15} DIAG_SOCKADDR, *PDIAG_SOCKADDR;
16*/
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22typedef struct tagDIAG_SOCKADDR DIAG_SOCKADDR;
23
24typedef enum tagATTRIBUTE_TYPE {
25  AT_INVALID        = 0,
26  AT_BOOLEAN,
27  AT_INT8,
28  AT_UINT8,
29  AT_INT16,
30  AT_UINT16,
31  AT_INT32,
32  AT_UINT32,
33  AT_INT64,
34  AT_UINT64,
35  AT_STRING,
36  AT_GUID,
37  AT_LIFE_TIME,
38  AT_SOCKADDR,
39  AT_OCTET_STRING
40} ATTRIBUTE_TYPE;
41
42typedef enum tagREPAIR_SCOPE {
43  RS_SYSTEM        = 0,
44  RS_USER          = 1,
45  RS_APPLICATION   = 2,
46  RS_PROCESS       = 3
47} REPAIR_SCOPE;
48
49typedef enum tagREPAIR_RISK {
50  RR_NOROLLBACK   = 0,
51  RR_ROLLBACK     = 1,
52  RR_NORISK       = 2
53} REPAIR_RISK;
54
55typedef enum tagUI_INFO_TYPE {
56  UIT_NONE            = 0,
57  UIT_SHELL_COMMAND,
58  UIT_HELP_PANE,
59  UIT_DUI
60} UI_INFO_TYPE;
61
62typedef enum tagPROBLEM_TYPE {
63  PT_LOW_HEALTH              = 1,
64  PT_LOWER_HEALTH            = 2,
65  PT_DOWN_STREAM_HEALTH      = 4,
66  PT_HIGH_UTILIZATION        = 8,
67  PT_HIGHER_UTILIZATION      = 16,
68  PT_UP_STREAM_UTILIZATION   = 32
69} PROBLEM_TYPE;
70
71typedef enum tagREPAIR_STATUS {
72  RS_NOT_IMPLEMENTED   = 0,
73  RS_REPAIRED          = 1,
74  RS_UNREPAIRED        = 2,
75  RS_DEFERRED          = 3,
76  RS_USER_ACTION       = 4
77} REPAIR_STATUS;
78
79typedef struct tagLIFE_TIME {
80  FILETIME startTime;
81  FILETIME endTime;
82} LIFE_TIME, *PLIFE_TIME;
83
84typedef struct tagOCTET_STRING {
85  DWORD dwLength;
86  BYTE  *lpValue;
87} OCTET_STRING, *POCTET_STRING;
88
89typedef struct tagUiInfo {
90  UI_INFO_TYPE type;
91  __C89_NAMELESS union {
92    LPWSTR pwzNull;
93    ShellCommandInfo ShellInfo;
94    LPWSTR pwzHelpURL;
95    LPWSTR pwzDui;
96  };
97} UiInfo, *PUiInfo;
98
99typedef struct tagRepairInfo {
100  GUID            guid;
101  LPWSTR          pwszClassName;
102  LPWSTR          pwszDescription;
103  DWORD           sidType;
104  __LONG32            cost;
105  ULONG           flags;
106  REPAIR_SCOPE    scope;
107  REPAIR_RISK     risk;
108  UiInfo          UiInfo;
109} RepairInfo, *PRepairInfo;
110
111typedef struct tagShellCommandInfo {
112  LPWSTR pwszOperation;
113  LPWSTR pwszFile;
114  LPWSTR pwszParameters;
115  LPWSTR pwszDirectory;
116  ULONG  nShowCmd;
117} ShellCommandInfo, *PShellCommandInfo;
118
119typedef struct tagHELPER_ATTRIBUTE {
120  LPWSTR pwszName;
121  ATTRIBUTE_TYPE  type;
122  __C89_NAMELESS union {
123    WINBOOL Boolean;
124    char Char;
125    byte Byte;
126    short Short;
127    WORD Word;
128    int Int;
129    DWORD DWord;
130    LONGLONG Int64;
131    ULONGLONG UInt64;
132    LPWSTR PWStr;
133    GUID Guid;
134    LIFE_TYPE LifeTime;
135    DIAG_SOCKADDR Address;
136    OCTET_STRING OctetString;
137  };
138} HELPER_ATTRIBUTE;
139
140#ifdef __cplusplus
141}
142#endif
143
144
145#if (_WIN32_WINNT >= 0x0601)
146
147#ifdef __cplusplus
148extern "C" {
149#endif
150
151#define RCF_ISLEAF 0x1
152#define RCF_ISCONFIRMED 0x2
153#define RCF_ISTHIRDPARTY 0x4
154
155typedef struct tagRepairInfoEx {
156  RepairInfo repair;
157  USHORT     repairRank;
158} RepairInfoEx, *PRepairInfoEx;
159
160typedef struct tagRootCauseInfo {
161  LPWSTR       pwszDescription;
162  GUID         rootCauseID;
163  DWORD        rootCauseFlags;
164  GUID         networkInterfaceID;
165  RepairInfoEx *pRepairs;
166  USHORT       repairCount;
167} RootCauseInfo;
168
169#ifdef __cplusplus
170}
171#endif
172
173#endif /*(_WIN32_WINNT >= 0x0601)*/
174
175
176#endif /*(_WIN32_WINNT >= 0x0600)*/
177
178#endif /*_INC_NDATTRIB*/
179
180