|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1999
//
// File: wmiprop.h
//
//--------------------------------------------------------------------------
#ifndef ___wmiprop_h___
#define ___wmiprop_h___
typedef TCHAR *PTCHAR;
//
// Datablock description
//
//
// Holds a list of valid values for an enumeration type
//
typedef struct _ENUMERATIONITEM { ULONG64 Value; PTCHAR Text; ULONG Reserved; } ENUMERATIONITEM, *PENUMERATIONITEM;
typedef struct _ENUMERATIONINFO { ULONG Count; ULONG Reserved; ENUMERATIONITEM List[1]; } ENUMERATIONINFO, *PENUMERATIONINFO;
//
// Holds a range of values
typedef struct { ULONG64 Minimum; ULONG64 Maximum; } RANGEINFO, *PRANGEINFO;
//
// Holds a list of ranges of values
//
typedef struct { ULONG Count; RANGEINFO Ranges[1]; } RANGELISTINFO, *PRANGELISTINFO;
typedef enum VALIDATIONFUNC { WmiStringValidation, WmiDateTimeValidation, WmiRangeValidation, WmiValueMapValidation, WmiEmbeddedValidation } VALIDATIONFUNC, *PVALIDATIONFUNC; #define WmiMaximumValidation WmiEmbeddedValidation
struct _DATA_BLOCK_DESCRIPTION;
typedef struct _DATA_ITEM_DESCRIPTION { // CONSIDER: Make Name a BSTR
PTCHAR Name; PTCHAR DisplayName; PTCHAR Description; CIMTYPE DataType; ULONG DataSize; VALIDATIONFUNC ValidationFunc; union { //
// Used for enumeration data types
//
PENUMERATIONINFO EnumerationInfo; //
// Used for a range of numbers
PRANGELISTINFO RangeListInfo;
//
// Used for embedded classes
struct _DATA_BLOCK_DESCRIPTION *DataBlockDesc; }; //
// Number of elements in array if this item is an array
//
ULONG ArrayElementCount; ULONG CurrentArrayIndex;
//
// Flags about property
//
ULONG IsReadOnly : 1; ULONG IsSignedValue : 1; ULONG DisplayInHex : 1; ULONG IsFixedArray : 1; ULONG IsVariableArray : 1; //
// Actual value of the property
//
union { //
// storage for non array
//
UCHAR Data;
BOOLEAN boolval; CHAR sint8; SHORT sint16; LONG sint32; LONG64 sint64; UCHAR uint8; USHORT uint16; ULONG uint32; ULONG64 uint64; PTCHAR String; PTCHAR DateTime; IWbemClassObject *pIWbemClassObject; //
// pointer for storage to arrays
//
PVOID ArrayPtr;
BOOLEAN *boolArray; CHAR *sint8Array; SHORT *sint16Array; LONG *sint32Array; LONG64 *sint64Array; UCHAR *uint8Array; USHORT *uint16Array; ULONG *uint32Array; ULONG64 *uint64Array; PTCHAR *StringArray; PTCHAR *DateTimeArray; IWbemClassObject **pIWbemClassObjectArray; }; } DATA_ITEM_DESCRIPTION, *PDATA_ITEM_DESCRIPTION;
typedef struct _DATA_BLOCK_DESCRIPTION { PTCHAR Name; PTCHAR DisplayName; PTCHAR Description; struct _DATA_BLOCK_DESCRIPTION *ParentDataBlockDesc; IWbemClassObject *pInstance; ULONG DataItemCount; ULONG CurrentDataItem; BOOLEAN UpdateClass; DATA_ITEM_DESCRIPTION DataItems[1]; } DATA_BLOCK_DESCRIPTION, *PDATA_BLOCK_DESCRIPTION;
BOOLEAN ValidateEnumeration( PDATA_ITEM_DESCRIPTION DataItem, PTCHAR Value );
BOOLEAN ValidateRangeList( PDATA_ITEM_DESCRIPTION DataItem, ULONG64 Value );
BOOLEAN ValidateDateTime( PDATA_ITEM_DESCRIPTION DataItem, PTCHAR DateTime );
typedef struct { PTCHAR MachineName; PTCHAR RelPath; PDATA_BLOCK_DESCRIPTION DataBlockDesc; IWbemServices *pIWbemServices; } CONFIGCLASS, *PCONFIGCLASS;
//
// PageInfo and Prototypes
//
typedef struct _PAGE_INFO { HDEVINFO deviceInfoSet; PSP_DEVINFO_DATA deviceInfoData;
HKEY hKeyDev;
CONFIGCLASS ConfigClass; } PAGE_INFO, * PPAGE_INFO;
//
// Debug support
//
#ifdef DebugPrint
#undef DebugPrint
#endif
#if DBG
ULONG _cdecl DbgPrint( PCH Format, ... );
#define DEBUG_BUFFER_LENGTH 256
#define DebugPrint(x) WmiDebugPrint x
#else
#define DebugPrint(x)
#endif // DBG
VOID WmiDebugPrint( ULONG DebugPrintLevel, PCHAR DebugMessage, ... );
//
// function prototype
//
void WmiCleanDataItemDescData( PDATA_ITEM_DESCRIPTION DataItemDesc );
void WmiHideAllControls( HWND hDlg, BOOLEAN HideEmbeddedControls, BOOLEAN HideArrayControls );
BOOLEAN WmiValidateNumber( struct _DATA_ITEM_DESCRIPTION *DataItemDesc, PTCHAR Value );
BOOLEAN WmiValidateDateTime( struct _DATA_ITEM_DESCRIPTION *DataItemDesc, PTCHAR Value );
BOOLEAN WmiValidateRange( struct _DATA_ITEM_DESCRIPTION *DataItemDesc, PTCHAR Value );
PPAGE_INFO WmiCreatePageInfo(IN HDEVINFO deviceInfoSet, IN PSP_DEVINFO_DATA deviceInfoData);
void WmiDestroyPageInfo(PPAGE_INFO * ppPageInfo);
//
// Function Prototypes
//
BOOL APIENTRY WmiPropPageProvider(LPVOID pinfo, LPFNADDPROPSHEETPAGE pfnAdd, LPARAM lParam);
HPROPSHEETPAGE WmiCreatePropertyPage(PROPSHEETPAGE * ppsp, PPAGE_INFO ppi);
UINT CALLBACK WmiDlgCallback(HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp);
INT_PTR APIENTRY WmiDlgProc(IN HWND hDlg, IN UINT uMessage, IN WPARAM wParam, IN LPARAM lParam);
BOOLEAN WmiApplyChanges(PPAGE_INFO ppi, HWND hDlg);
void WmiUpdate (PPAGE_INFO ppi, HWND hDlg);
BOOL WmiContextMenu(HWND HwndControl, WORD Xpos, WORD Ypos);
void WmiHelp(HWND ParentHwnd, LPHELPINFO HelpInfo);
#endif // ___Wmiprop_h___
|