94 lines
3.0 KiB
C++
94 lines
3.0 KiB
C++
/*++
|
|
|
|
Copyright (C) 1998-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
UBSKPCKT.H
|
|
|
|
Abstract:
|
|
|
|
Unbound Sink Packet
|
|
|
|
History:
|
|
|
|
--*/
|
|
|
|
#ifndef __UBSINKPACKET_H__
|
|
#define __UBSINKPACKET_H__
|
|
|
|
#include "wbemdatapacket.h"
|
|
#include "wbemobjpacket.h"
|
|
#include "wbemclasstoidmap.h"
|
|
#include "wbemclasscache.h"
|
|
|
|
// Store the current packing value, then set our own value
|
|
#pragma pack( push )
|
|
#pragma pack( 1 )
|
|
|
|
// IWbemObjectSink::Indicate() Header. Changing this will
|
|
// cause the main version to change
|
|
typedef struct tagWBEM_DATAPACKET_UNBOUNDSINK_INDICATE
|
|
{
|
|
DWORD dwSizeOfHeader; // Size of the header struct. Data immediately follows header.
|
|
DWORD dwDataSize; // Size of Data following header.
|
|
DWORD dwLogicalConsumerSize; // Size of Logical Consumer Object
|
|
} WBEM_DATAPACKET_UNBOUNDSINK_INDICATE;
|
|
|
|
typedef WBEM_DATAPACKET_UNBOUNDSINK_INDICATE* PWBEM_DATAPACKET_UNBOUNDSINK_INDICATE;
|
|
|
|
// restore packing
|
|
#pragma pack( pop )
|
|
|
|
//
|
|
// Class: CWbemUnboundSinkIndicatePacket
|
|
//
|
|
// This class is designed to wrapper a data packet that describes an
|
|
// IWbemUnbopundObjectSink::IndicateToConsumer() operation. The data
|
|
// structure of this packet is described above. It makes use of
|
|
// CWbemObjectPacket, CWbemInstancePacket, CWbemClassPacket and
|
|
// CWbemClasslessInstancePacket to walk and analyze data for each of
|
|
// the IWbemClassObjects that are indicated into the Sink.
|
|
//
|
|
|
|
class CWbemUnboundSinkIndicatePacket : public CWbemDataPacket
|
|
{
|
|
|
|
protected:
|
|
|
|
PWBEM_DATAPACKET_UNBOUNDSINK_INDICATE m_pUnboundSinkIndicate;
|
|
|
|
public:
|
|
|
|
CWbemUnboundSinkIndicatePacket( LPBYTE pDataPacket = NULL, DWORD dwPacketLength = 0 );
|
|
~CWbemUnboundSinkIndicatePacket();
|
|
|
|
HRESULT CalculateLength( IWbemClassObject* pLogicalConsumer, LONG lObjectCount,
|
|
IWbemClassObject** apClassObjects, DWORD* pdwLength, CWbemClassToIdMap& classtoidmap, GUID* pguidClassIds, BOOL* pfSendFullObject );
|
|
HRESULT MarshalPacket( IWbemClassObject* pLogicalConsumer, LONG lObjectCount,
|
|
IWbemClassObject** apClassObjects, GUID* paguidClassIds, BOOL* pfSendFullObject );
|
|
HRESULT UnmarshalPacket( IWbemClassObject*& pLogicalConsumer, LONG& lObjectCount,
|
|
IWbemClassObject**& apClassObjects, CWbemClassCache& classcache );
|
|
|
|
// inline helper
|
|
HRESULT MarshalPacket( LPBYTE pData, DWORD dwPacketLength, IWbemClassObject* pLogicalConsumer,
|
|
LONG lObjectCount, IWbemClassObject** apClassObjects, GUID* paguidClassIds,
|
|
BOOL* pfSendFullObject );
|
|
|
|
// Change the underlying pointers
|
|
// Override of base class
|
|
void SetData( LPBYTE pDataPacket, DWORD dwPacketLength );
|
|
|
|
};
|
|
|
|
inline HRESULT CWbemUnboundSinkIndicatePacket::MarshalPacket( LPBYTE pData, DWORD dwPacketLength,
|
|
IWbemClassObject* pLogicalConsumer,
|
|
LONG lObjectCount,
|
|
IWbemClassObject** apClassObjects,
|
|
GUID* paguidClassIds, BOOL* pfSendFullObject )
|
|
{
|
|
SetData( pData, dwPacketLength );
|
|
return MarshalPacket( pLogicalConsumer, lObjectCount, apClassObjects, paguidClassIds, pfSendFullObject );
|
|
}
|
|
|
|
#endif |