2025-04-27 07:49:33 -04:00

154 lines
4.3 KiB
C++

//==============================================================;
//
// This source code is only intended as a supplement to
// existing Microsoft documentation.
//
// Use of this code is NOT supported.
//
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
// PURPOSE.
//
// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
//
// Microsoft Premier Support for Developers
//
//==============================================================;
#ifndef _EQUIPMENT_H
#define _EQUIPMENT_H
#include "DeleBase.h"
#include <wbemcli.h>
#include "SimpleArray.h"
class CEquipment;
class CEquipmentFolder : public CDelegationBase {
public:
CEquipmentFolder();
virtual ~CEquipmentFolder();
virtual const _TCHAR *GetDisplayName(int nCol = 0) { return _T("Equipment"); }
virtual const GUID & getNodeType() { return thisGuid; }
virtual const int GetBitmapIndex() { return INDEX_CLOSEDFOLDER; }
// virtual functions go here (for MMCN_*)
virtual HRESULT OnSelect(IConsole *pConsole, BOOL bScope, BOOL bSelect);
HRESULT OnShow(IConsole *pConsole, BOOL bShow, HSCOPEITEM scopeitem);
HRESULT GetPtr(IWbemServices **ptr);
virtual HRESULT OnRefresh(LPDATAOBJECT lpDataObject);
private:
// {2974380e-4C4B-11d2-89D8-000021473128}
static const GUID thisGuid;
CSimpleArray<CEquipment *> m_children;
bool EnumChildren(IWbemServices *service);
void EmptyChildren(void);
HRESULT DisplayChildren(void);
// for the connection thread.
void StopThread();
static LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam); // second message parameter
static DWORD WINAPI ThreadProc(LPVOID lpParameter);
bool ErrorString(HRESULT hr, TCHAR *errMsg, UINT errSize);
void RegisterEventSink(IWbemServices *service);
IWbemObjectSink *m_pStubSink;
IUnsecuredApartment *m_pUnsecApp;
HWND m_connectHwnd;
DWORD m_threadId;
HANDLE m_thread;
HANDLE m_doWork; // telling the thread to do something.
int m_threadCmd; // what command the thread should do.
#define CT_CONNECT 0
#define CT_GET_PTR 1
#define CT_EXIT 2
CRITICAL_SECTION m_critSect;
bool m_running; // thread is processing a command now.
HANDLE m_ptrReady; // the thread has done the work.
BOOL m_bSelected;
IResultData *m_pResultData;
IStream *m_pStream;
IWbemServices *m_realWMI;// lives in the background thread. Use marshalling.
};
class CEquipment : public CDelegationBase {
public:
CEquipment(CEquipmentFolder *parent, IWbemClassObject *inst);
virtual ~CEquipment()
{
if(m_inst)
m_inst->Release();
m_inst = 0;
}
virtual const _TCHAR *GetDisplayName(int nCol = 0);
virtual const GUID & getNodeType() { return thisGuid; }
virtual const int GetBitmapIndex() { return INDEX_PEOPLEICON; }
public:
// virtual functions go here (for MMCN_*)
virtual HRESULT OnSelect(IConsole *pConsole, BOOL bScope, BOOL bSelect);
virtual HRESULT CreatePropertyPages(IPropertySheetCallback *lpProvider, LONG_PTR handle);
virtual HRESULT HasPropertySheets();
virtual HRESULT GetWatermarks(HBITMAP *lphWatermark,
HBITMAP *lphHeader,
HPALETTE *lphPalette,
BOOL *bStretch);
virtual HRESULT OnPropertyChange();
private:
CEquipmentFolder *m_parent;
IWbemClassObject *m_inst;
LONG_PTR m_ppHandle;
static INT_PTR CALLBACK DialogProc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam);// second message parameter
// {2974380e-4C4B-11d2-89D8-000021473128}
static const GUID thisGuid;
bool GetGirls(void);
const TCHAR *ConvertSurfaceValue(BYTE val);
HRESULT PutProperty(LPWSTR propName, LPTSTR str);
HRESULT PutProperty(LPWSTR propName, BYTE val);
HRESULT PutProperty(LPWSTR propName, bool val);
void LoadSurfaces(HWND hwndDlg, BYTE iSurface);
BYTE m_iSurface;
};
#endif // _EQUIPMENT_H