/*
 * This file is generated by the automatic RPC Parser generator. (Version 0.21)
 *
 * Created on 04/09/97 at 00:00:13.
 */

#include <stdio.h>
#include "funcs.h"

/*
 * The following functions are generated by default and used by
 * the AttachProperties functions below.
 */

void WINAPIV GenericFormatSummary(LPPROPERTYINST lpPropertyInst)
{
	DWORD Data = lpPropertyInst->lpPropertyInstEx->Dword[0];
	BOOL fIsRequest = ((Data & 0x80000000) != 0);
	WORD nProcedure = (WORD)(Data & 0xffff);
	WORD nInterface = ((WORD)(Data & 0x7fff) >> 16);

	wsprintf(lpPropertyInst->szPropertyText, "RPC %s %s:%s(..)",
	        (fIsRequest)?"Client call":"Server response",
	        InterfaceNames[nInterface],
	        ProcedureNames[ProcedureNameIndex[nInterface] + nProcedure - FirstProcedureNumber[nInterface]]);
}

void GenericAttachByte(HPROPERTY hProperty,
                       HFRAME    hFrame,
                       LPBYTE    lpData,
                       DWORD     IndentLevel)
{
	if (IndentLevel > 14) IndentLevel = 14;
	AttachPropertyInstance(hFrame,
	                       hProperty,
	                       sizeof(BYTE),
	                       lpData,
	                       0, IndentLevel, 0);
}

void GenericAttachWord(HPROPERTY hProperty,
                       HFRAME    hFrame,
                       LPBYTE    lpData,
                       DWORD     IndentLevel)
{
	if (IndentLevel > 14) IndentLevel = 14;
	AttachPropertyInstance(hFrame,
	                       hProperty,
	                       sizeof(WORD),
	                       lpData,
	                       0, IndentLevel,
	                       (fIsFlipped)?IFLAG_SWAPPED:0);
}

void GenericAttachDword(HPROPERTY hProperty,
                        HFRAME    hFrame,
                        LPBYTE    lpData,
                        DWORD     IndentLevel)
{
	if (IndentLevel > 14) IndentLevel = 14;
	AttachPropertyInstance(hFrame,
	                       hProperty,
	                       sizeof(DWORD),
	                       lpData,
	                       0, IndentLevel,
	                       (fIsFlipped)?IFLAG_SWAPPED:0);
}

void GenericAttachLargeint(HPROPERTY hProperty,
                           HFRAME    hFrame,
                           LPBYTE    lpData,
                           DWORD     IndentLevel)
{
	if (IndentLevel > 14) IndentLevel = 14;
	AttachPropertyInstance(hFrame,
	                       hProperty,
	                       8,
	                       lpData,
	                       0, IndentLevel,
	                       (fIsFlipped)?IFLAG_SWAPPED:0);
}

void GenericAttachString(HPROPERTY hProperty,
                         HFRAME    hFrame,
                         LPBYTE    lpData,
                         DWORD     nLength,
                         DWORD     IndentLevel)
{
	if (IndentLevel > 14) IndentLevel = 14;
	AttachPropertyInstance(hFrame,
	                       hProperty,
	                       nLength,
	                       lpData,
	                       0, IndentLevel, 0);
}

void GenericAttachUnicodeString(HPROPERTY hProperty,
                                HFRAME    hFrame,
                                LPBYTE    lpData,
                                DWORD     nLength,
                                DWORD     IndentLevel)
{
	TYPED_STRING ts;

	ts.StringType = TYPED_STRING_UNICODE;
	ts.lpString = lpData;
	if (IndentLevel > 14) IndentLevel = 14;
	if (nLength)
		AttachPropertyInstanceEx(hFrame,
		                         hProperty,
		                         nLength,
		                         lpData,
		                         nLength,
		                         &ts,
		                         0, IndentLevel, 0);
}

void GenericAttachAnything(HPROPERTY hProperty,
                           HFRAME    hFrame,
                           LPBYTE    lpData,
                           DWORD     nLength,
                           DWORD     IndentLevel)
{
	if (IndentLevel > 14) IndentLevel = 14;
	AttachPropertyInstance(hFrame,
	                       hProperty,
	                       nLength,
	                       lpData,
	                       0, IndentLevel, 0);
}

void GenericAttachStruct(HPROPERTY hProperty,
                         HFRAME    hFrame,
                         LPBYTE    lpData,
                         DWORD     nLength,
                         DWORD     IndentLevel)
{
	if (IndentLevel > 14) IndentLevel = 14;
	AttachPropertyInstance(hFrame,
	                       hProperty,
	                       nLength,
	                       lpData,
	                       0, IndentLevel, 0);
}

void GenericAttachID(HPROPERTY hProperty,
                       HFRAME    hFrame,
                       LPBYTE    lpData,
                       DWORD     IndentLevel)
{
	if (IndentLevel > 14) IndentLevel = 14;
	AttachPropertyInstance(hFrame,
	                       hProperty,
	                       16,
	                       lpData,
	                       0, IndentLevel, 0);
}

DWORD WINAPI resmon_RmCreateResource_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = DllName_Handler_0(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		fConformanceIsSet = FALSE;
		nOffset = ResourceType_Handler_1(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		fConformanceIsSet = FALSE;
		nOffset = ResourceName_Handler_2(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_LOOKSALIVEPOLL_3].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_ISALIVEPOLL_4].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_NOTIFYKEY_5].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_PENDINGTIMEOUT_6].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	else
	{
		fConformanceIsSet = FALSE;
		nOffset = Value_Handler_3(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmCloseResource_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_4(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	else
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_4(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmChangeResourceParams_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_LOOKSALIVEPOLL_3].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_ISALIVEPOLL_4].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_PENDINGTIMEOUT_6].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	else
	{
		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmOnlineResource_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	else
	{
		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_PDWSTATE_10].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmOfflineResource_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	else
	{
		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_PDWSTATE_10].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmTerminateResource_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	else
	{
	}
	return(nOffset);
}

DWORD WINAPI resmon_RmArbitrateResource_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	else
	{
		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmReleaseResource_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	else
	{
		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmNotifyChanges_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
	}
	else
	{
		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_LPNOTIFYKEY_11].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_LPNOTIFYEVENT_12].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_LPCURRENTSTATE_13].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmFailResource_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

	}
	else
	{
		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmShutdownProcess_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
	}
	else
	{
		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmResourceControl_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_CONTROLCODE_14].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		fConformanceIsSet = FALSE;
		nOffset = InBuffer_Handler_6(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_INBUFFERSIZE_16].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_OUTBUFFERSIZE_17].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	else
	{
		fConformanceIsSet = FALSE;
		nOffset = OutBuffer_Handler_7(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_LPDWORD_BYTESREFURNED_19].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_LPDWORD_REQUIRED_20].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD WINAPI resmon_RmResourceTypeControl_AttachProperties(
                HFRAME hFrame,
                LPBYTE lpData,
                DWORD  FrameLength,
                DWORD  nCurrentInterface,
                DWORD  InstData)
{
	/* Decompose the InstData information. */
	BOOL  fIsRequest = ((InstData & 0x80000000) != 0);
	WORD  Version    = ((WORD)(InstData >> 16) & 0x3fff);

	BOOL fExtensions = 0;

	DWORD nOffset = 0;

	/* These are specifically for calling handler functions */
	DWORD PointerDataOffset = nOffset;
	DWORD *lpdwPointerDataOffset = &PointerDataOffset;

	fIsFlipped = ((InstData & 0x40000000) != 0);

	nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
	InstData &= 0x8000ffff;
	InstData |= nCurrentInterface;
	AttachPropertyInstanceEx(hFrame,
	    resmon_Database[I0_SUMMARY].hProperty,
	    FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);

	/* Take different action based on the direction */
	/* If fIsRequest is TRUE, the packet originated from the client. */
	if (fIsRequest)
	{
		fConformanceIsSet = FALSE;
		nOffset = ResourceTypeName_Handler_8(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		fConformanceIsSet = FALSE;
		nOffset = DllName_Handler_0(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_CONTROLCODE_14].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		fConformanceIsSet = FALSE;
		nOffset = InBuffer_Handler_9(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_INBUFFERSIZE_16].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_DWORD_OUTBUFFERSIZE_17].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	else
	{
		fConformanceIsSet = FALSE;
		nOffset = OutBuffer_Handler_10(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);

		if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;

		if ((*lpdwPointerDataOffset == 0xffffffff) ||
		    (*lpdwPointerDataOffset > FrameLength))
		    nOffset = FrameLength;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_LPDWORD_BYTESREFURNED_19].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_LPDWORD_REQUIRED_20].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

		ALIGN(nOffset, 3);
		if ((nOffset+4) > FrameLength) return(FrameLength);
		GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
		nOffset += 4;

	}
	return(nOffset);
}

DWORD DllName_Handler_0(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* LPCWSTR DllName [FC_C_WSTRING] at offset 2 */

	ALIGN(nOffset, 3);
	nOffset += 8;

	{
		DWORD Length;

		Length = DWORDAT(lpData + nOffset) * sizeof(wchar_t);
		nOffset += 4;

		if ((nOffset+Length) > FrameLength) return(FrameLength);

		GenericAttachUnicodeString(resmon_Database[I0_LPCWSTR_DLLNAME_22].hProperty, hFrame, lpData + nOffset, Length, nPropertyLevel);
		nOffset += Length;
	}
	return(nOffset);
}

DWORD ResourceType_Handler_1(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* LPCWSTR ResourceType [FC_C_WSTRING] at offset 2 */

	ALIGN(nOffset, 3);
	nOffset += 8;

	{
		DWORD Length;

		Length = DWORDAT(lpData + nOffset) * sizeof(wchar_t);
		nOffset += 4;

		if ((nOffset+Length) > FrameLength) return(FrameLength);

		GenericAttachUnicodeString(resmon_Database[I0_LPCWSTR_RESOURCETYPE_23].hProperty, hFrame, lpData + nOffset, Length, nPropertyLevel);
		nOffset += Length;
	}
	return(nOffset);
}

DWORD ResourceName_Handler_2(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* LPCWSTR ResourceName [FC_C_WSTRING] at offset 2 */

	ALIGN(nOffset, 3);
	nOffset += 8;

	{
		DWORD Length;

		Length = DWORDAT(lpData + nOffset) * sizeof(wchar_t);
		nOffset += 4;

		if ((nOffset+Length) > FrameLength) return(FrameLength);

		GenericAttachUnicodeString(resmon_Database[I0_LPCWSTR_RESOURCENAME_24].hProperty, hFrame, lpData + nOffset, Length, nPropertyLevel);
		nOffset += Length;
	}
	return(nOffset);
}

DWORD Value_Handler_3(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/*  Return Value [FC_BIND_CONTEXT] at offset 4 */

	ALIGN(nOffset, 3);
	GenericAttachStruct(resmon_Database[I0_RETURN_VALUE_25].hProperty,
	                    hFrame,
	                    lpData + nOffset,
	                    20,
	                    nPropertyLevel);

	nOffset += 20;

	return(nOffset);
}

DWORD ResourceId_Handler_4(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* RPC_RESID ResourceId [FC_BIND_CONTEXT] at offset 12 */

	ALIGN(nOffset, 3);
	GenericAttachStruct(resmon_Database[I0_RPC_RESID_RESOURCEID_8].hProperty,
	                    hFrame,
	                    lpData + nOffset,
	                    20,
	                    nPropertyLevel);

	nOffset += 20;

	return(nOffset);
}

DWORD ResourceId_Handler_5(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* RPC_RESID ResourceId [FC_BIND_CONTEXT] at offset 16 */

	ALIGN(nOffset, 3);
	GenericAttachStruct(resmon_Database[I0_RPC_RESID_RESOURCEID_8].hProperty,
	                    hFrame,
	                    lpData + nOffset,
	                    20,
	                    nPropertyLevel);

	nOffset += 20;

	return(nOffset);
}

DWORD InBuffer_Handler_6(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	*lpdwPointerDataOffset = nOffset + 4;
	/* UCHAR InBuffer [unique ptr] at offset 24 */

	if (!fIgnorePointers)
	{
		{
			BOOL OldfIgnoreFlatPart;

			OldfIgnoreFlatPart = fIgnoreFlatPart;
			fIgnoreFlatPart = FALSE;

			ALIGN(nOffset, 3);
			nOffset += 4;
			nOffset -= 4;
			if (DWORDAT(lpData + nOffset) != 0)
			{
				nOffset = InBuffer_Handler_11(hFrame, lpData, *lpdwPointerDataOffset, FrameLength, lpdwPointerDataOffset);

			}

			fIgnoreFlatPart = OldfIgnoreFlatPart;

		}
	}
	else
	{
		nOffset += 4;

	}

	return(nOffset);
}

DWORD OutBuffer_Handler_7(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* UCHAR OutBuffer [FC_CVARRAY] at offset 42 */

	if (!fConformanceIsSet)
	{
		ALIGN(nOffset, 3);
		Conformance = DWORDAT(lpData + nOffset);
		fConformanceIsSet = TRUE;
		nOffset += 4;

	}
	{
		DWORD i = 0, OldfIgnorePointers = FALSE, ElementSize, OldOffset, FlatSize;

		nOffset += 4;

		Conformance = DWORDAT(lpData + nOffset);
		nOffset += 4;

		Iterations = Conformance;
		ElementSize = 1;
		FlatSize = Conformance * ElementSize;
		OldOffset = nOffset;
		if (!fIgnoreFlatPart)
		{
			if (!fIgnorePointers)
			{
				*lpdwPointerDataOffset = nOffset + FlatSize;
				ALIGN(*lpdwPointerDataOffset, 3);
			}

			ALIGN(nOffset, 0);
			if ((nOffset+FlatSize) > FrameLength) FlatSize = FrameLength - nOffset;
			GenericAttachAnything(resmon_Database[I0_UCHAR_OUTBUFFER______26].hProperty, hFrame, lpData + nOffset, FlatSize, nPropertyLevel);
			nOffset += FlatSize;

			nOffset = OldOffset;
		}

		nOffset = OldOffset + FlatSize;
	}
	return(nOffset);
}

DWORD ResourceTypeName_Handler_8(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* LPCWSTR ResourceTypeName [FC_C_WSTRING] at offset 2 */

	ALIGN(nOffset, 3);
	nOffset += 8;

	{
		DWORD Length;

		Length = DWORDAT(lpData + nOffset) * sizeof(wchar_t);
		nOffset += 4;

		if ((nOffset+Length) > FrameLength) return(FrameLength);

		GenericAttachUnicodeString(resmon_Database[I0_LPCWSTR_RESOURCETYPENAME_27].hProperty, hFrame, lpData + nOffset, Length, nPropertyLevel);
		nOffset += Length;
	}
	return(nOffset);
}

DWORD InBuffer_Handler_9(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	*lpdwPointerDataOffset = nOffset + 4;
	/* UCHAR InBuffer [unique ptr] at offset 56 */

	if (!fIgnorePointers)
	{
		{
			BOOL OldfIgnoreFlatPart;

			OldfIgnoreFlatPart = fIgnoreFlatPart;
			fIgnoreFlatPart = FALSE;

			ALIGN(nOffset, 3);
			nOffset += 4;
			nOffset -= 4;
			if (DWORDAT(lpData + nOffset) != 0)
			{
				nOffset = InBuffer_Handler_12(hFrame, lpData, *lpdwPointerDataOffset, FrameLength, lpdwPointerDataOffset);

			}

			fIgnoreFlatPart = OldfIgnoreFlatPart;

		}
	}
	else
	{
		nOffset += 4;

	}

	return(nOffset);
}

DWORD OutBuffer_Handler_10(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* UCHAR OutBuffer [FC_CVARRAY] at offset 74 */

	if (!fConformanceIsSet)
	{
		ALIGN(nOffset, 3);
		Conformance = DWORDAT(lpData + nOffset);
		fConformanceIsSet = TRUE;
		nOffset += 4;

	}
	{
		DWORD i = 0, OldfIgnorePointers = FALSE, ElementSize, OldOffset, FlatSize;

		nOffset += 4;

		Conformance = DWORDAT(lpData + nOffset);
		nOffset += 4;

		Iterations = Conformance;
		ElementSize = 1;
		FlatSize = Conformance * ElementSize;
		OldOffset = nOffset;
		if (!fIgnoreFlatPart)
		{
			if (!fIgnorePointers)
			{
				*lpdwPointerDataOffset = nOffset + FlatSize;
				ALIGN(*lpdwPointerDataOffset, 3);
			}

			ALIGN(nOffset, 0);
			if ((nOffset+FlatSize) > FrameLength) FlatSize = FrameLength - nOffset;
			GenericAttachAnything(resmon_Database[I0_UCHAR_OUTBUFFER______26].hProperty, hFrame, lpData + nOffset, FlatSize, nPropertyLevel);
			nOffset += FlatSize;

			nOffset = OldOffset;
		}

		nOffset = OldOffset + FlatSize;
	}
	return(nOffset);
}

DWORD InBuffer_Handler_11(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* UCHAR InBuffer [FC_CARRAY] at offset 28 */

	if (!fConformanceIsSet)
	{
		ALIGN(nOffset, 3);
		Conformance = DWORDAT(lpData + nOffset);
		fConformanceIsSet = TRUE;
		nOffset += 4;

	}
	{
		DWORD i = 0, OldfIgnorePointers = FALSE, ElementSize, OldOffset, FlatSize;

		Iterations = Conformance;
		ElementSize = 1;
		FlatSize = Conformance * ElementSize;
		OldOffset = nOffset;
		if (!fIgnoreFlatPart)
		{
			if (!fIgnorePointers)
			{
				*lpdwPointerDataOffset = nOffset + FlatSize;
				ALIGN(*lpdwPointerDataOffset, 3);
			}

			ALIGN(nOffset, 0);
			if ((nOffset+FlatSize) > FrameLength) FlatSize = FrameLength - nOffset;
			GenericAttachAnything(resmon_Database[I0_UCHAR_INBUFFER______28].hProperty, hFrame, lpData + nOffset, FlatSize, nPropertyLevel);
			nOffset += FlatSize;

			nOffset = OldOffset;
		}

		nOffset = OldOffset + FlatSize;
	}
	return(nOffset);
}

DWORD InBuffer_Handler_12(
          HFRAME  hFrame,
          LPBYTE  lpData,
          DWORD   nOffset,
          DWORD   FrameLength,
          LPDWORD lpdwPointerDataOffset)
{
	DWORD nStartOffset = nOffset;
	DWORD Iterations = 0;

	/* UCHAR InBuffer [FC_CARRAY] at offset 60 */

	if (!fConformanceIsSet)
	{
		ALIGN(nOffset, 3);
		Conformance = DWORDAT(lpData + nOffset);
		fConformanceIsSet = TRUE;
		nOffset += 4;

	}
	{
		DWORD i = 0, OldfIgnorePointers = FALSE, ElementSize, OldOffset, FlatSize;

		Iterations = Conformance;
		ElementSize = 1;
		FlatSize = Conformance * ElementSize;
		OldOffset = nOffset;
		if (!fIgnoreFlatPart)
		{
			if (!fIgnorePointers)
			{
				*lpdwPointerDataOffset = nOffset + FlatSize;
				ALIGN(*lpdwPointerDataOffset, 3);
			}

			ALIGN(nOffset, 0);
			if ((nOffset+FlatSize) > FrameLength) FlatSize = FrameLength - nOffset;
			GenericAttachAnything(resmon_Database[I0_UCHAR_INBUFFER______28].hProperty, hFrame, lpData + nOffset, FlatSize, nPropertyLevel);
			nOffset += FlatSize;

			nOffset = OldOffset;
		}

		nOffset = OldOffset + FlatSize;
	}
	return(nOffset);
}