#ifndef _METERPRETER_COMMON_PIVOT_TREE_H
#define _METERPRETER_COMMON_PIVOT_TREE_H

typedef DWORD(*PivotWritePacket)(LPVOID state, LPBYTE rawPacket, DWORD rawPacketLength);
typedef DWORD(*PivotRemove)(LPVOID state);

typedef struct _PivotContext
{
	PivotWritePacket packet_write;
	PivotRemove remove;
	LPVOID state;
} PivotContext;

typedef struct _PivotNode PivotNode;

typedef struct _PivotTree
{
	PivotNode* head;
} PivotTree;

typedef void(*PivotTreeTraverseCallback)(LPBYTE guid, PivotContext* ctx, LPVOID state);

#endif