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
12 typedef struct tagDIAG_SOCKADDR {
13   USHORT family;
14   CHAR   data[126];
15 } DIAG_SOCKADDR, *PDIAG_SOCKADDR;
16 */
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 typedef struct tagDIAG_SOCKADDR DIAG_SOCKADDR;
23 
24 typedef 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 
42 typedef enum tagREPAIR_SCOPE {
43   RS_SYSTEM        = 0,
44   RS_USER          = 1,
45   RS_APPLICATION   = 2,
46   RS_PROCESS       = 3
47 } REPAIR_SCOPE;
48 
49 typedef enum tagREPAIR_RISK {
50   RR_NOROLLBACK   = 0,
51   RR_ROLLBACK     = 1,
52   RR_NORISK       = 2
53 } REPAIR_RISK;
54 
55 typedef enum tagUI_INFO_TYPE {
56   UIT_NONE            = 0,
57   UIT_SHELL_COMMAND,
58   UIT_HELP_PANE,
59   UIT_DUI
60 } UI_INFO_TYPE;
61 
62 typedef 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 
71 typedef 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 
79 typedef struct tagLIFE_TIME {
80   FILETIME startTime;
81   FILETIME endTime;
82 } LIFE_TIME, *PLIFE_TIME;
83 
84 typedef struct tagOCTET_STRING {
85   DWORD dwLength;
86   BYTE  *lpValue;
87 } OCTET_STRING, *POCTET_STRING;
88 
89 typedef 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 
99 typedef 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 
111 typedef struct tagShellCommandInfo {
112   LPWSTR pwszOperation;
113   LPWSTR pwszFile;
114   LPWSTR pwszParameters;
115   LPWSTR pwszDirectory;
116   ULONG  nShowCmd;
117 } ShellCommandInfo, *PShellCommandInfo;
118 
119 typedef 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
148 extern "C" {
149 #endif
150 
151 #define RCF_ISLEAF 0x1
152 #define RCF_ISCONFIRMED 0x2
153 #define RCF_ISTHIRDPARTY 0x4
154 
155 typedef struct tagRepairInfoEx {
156   RepairInfo repair;
157   USHORT     repairRank;
158 } RepairInfoEx, *PRepairInfoEx;
159 
160 typedef 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