/* * This file is generated by the automatic RPC Parser generator. (Version 0.21) * * Created on 04/09/97 at 00:00:13. */ #include "precomp.h" #pragma hdrstop /* Globals used throughout */ DWORD nPropertyLevel = 1; BOOL fIsFlipped = FALSE; BOOL fIgnoreFlatPart = FALSE; BOOL fIgnorePointers = FALSE; DWORD Conformance = 0; BOOL fConformanceIsSet = FALSE; /* ======================================================================== * * Protocol Entry points for Interface IntraCluster * uuid=(e248d0b8-bf15-11cf-8c5e-08002bb49649) * ======================================================================== */ VOID WINAPI IntraCluster_Register(HPROTOCOL); VOID WINAPI IntraCluster_Deregister(HPROTOCOL); LPBYTE WINAPI IntraCluster_RecognizeFrame(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, LPDWORD, LPHPROTOCOL, LPDWORD); LPBYTE WINAPI IntraCluster_AttachProperties(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, DWORD); DWORD WINAPI IntraCluster_FormatProperties(HFRAME, LPVOID, LPVOID, DWORD, LPPROPERTYINST); ENTRYPOINTS IntraCluster_EntryPoints = { IntraCluster_Register, IntraCluster_Deregister, IntraCluster_RecognizeFrame, IntraCluster_AttachProperties, IntraCluster_FormatProperties }; HPROTOCOL hIntraCluster = NULL; /* ======================================================================== * * Protocol Entry points for Interface ExtroCluster * uuid=(e248d0b8-bf15-11cf-8c5e-08002bb49649) * ======================================================================== */ VOID WINAPI ExtroCluster_Register(HPROTOCOL); VOID WINAPI ExtroCluster_Deregister(HPROTOCOL); LPBYTE WINAPI ExtroCluster_RecognizeFrame(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, LPDWORD, LPHPROTOCOL, LPDWORD); LPBYTE WINAPI ExtroCluster_AttachProperties(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, DWORD); DWORD WINAPI ExtroCluster_FormatProperties(HFRAME, LPVOID, LPVOID, DWORD, LPPROPERTYINST); ENTRYPOINTS ExtroCluster_EntryPoints = { ExtroCluster_Register, ExtroCluster_Deregister, ExtroCluster_RecognizeFrame, ExtroCluster_AttachProperties, ExtroCluster_FormatProperties }; HPROTOCOL hExtroCluster = NULL; /* ======================================================================== * * Protocol Entry points for Interface clusapi * uuid=(b97db8b2-4c63-11cf-bff6-08002be23f2f) * ======================================================================== */ VOID WINAPI Clusapi_Register(HPROTOCOL); VOID WINAPI Clusapi_Deregister(HPROTOCOL); LPBYTE WINAPI Clusapi_RecognizeFrame(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, LPDWORD, LPHPROTOCOL, LPDWORD); LPBYTE WINAPI Clusapi_AttachProperties(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, DWORD); DWORD WINAPI Clusapi_FormatProperties(HFRAME, LPVOID, LPVOID, DWORD, LPPROPERTYINST); ENTRYPOINTS Clusapi_EntryPoints = { Clusapi_Register, Clusapi_Deregister, Clusapi_RecognizeFrame, Clusapi_AttachProperties, Clusapi_FormatProperties }; HPROTOCOL hclusapi = NULL; /* ======================================================================== * * Protocol Entry points for Interface JoinVersion * uuid=(6e17aaa0-1a47-11d1-98bd-0000f875292e) * ======================================================================== */ VOID WINAPI JoinVersion_Register(HPROTOCOL); VOID WINAPI JoinVersion_Deregister(HPROTOCOL); LPBYTE WINAPI JoinVersion_RecognizeFrame(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, LPDWORD, LPHPROTOCOL, LPDWORD); LPBYTE WINAPI JoinVersion_AttachProperties(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, DWORD); DWORD WINAPI JoinVersion_FormatProperties(HFRAME, LPVOID, LPVOID, DWORD, LPPROPERTYINST); ENTRYPOINTS JoinVersion_EntryPoints = { JoinVersion_Register, JoinVersion_Deregister, JoinVersion_RecognizeFrame, JoinVersion_AttachProperties, JoinVersion_FormatProperties }; HPROTOCOL hJoinVersion = NULL; /* ======================================================================== * * Function DllMain called at loading and unloading time * ======================================================================== */ DWORD Attached = 0; BOOL WINAPI DLLEntry(HANDLE hInstance, ULONG Command, LPVOID Reserved) { if ( Command == DLL_PROCESS_ATTACH ) { if ( Attached++ == 0 ) { hIntraCluster = CreateProtocol("R_INTRACLUSTER", &IntraCluster_EntryPoints, ENTRYPOINTS_SIZE); hExtroCluster = CreateProtocol("R_EXTROCLUSTER", &ExtroCluster_EntryPoints, ENTRYPOINTS_SIZE); hclusapi = CreateProtocol("R_CLUSAPI", &Clusapi_EntryPoints, ENTRYPOINTS_SIZE); hJoinVersion = CreateProtocol("R_JOINVERSION", &JoinVersion_EntryPoints, ENTRYPOINTS_SIZE); } } if ( Command == DLL_PROCESS_DETACH ) { if ( --Attached == 0 ) { DestroyProtocol(hIntraCluster); DestroyProtocol(hExtroCluster); DestroyProtocol(hclusapi); DestroyProtocol(hJoinVersion); } } return TRUE; } /* ======================================================================== * * Implementation of the entry point functions for each interface * ======================================================================== */ /* * Interface IntraCluster, protocol RPC_IntraCluster: */ VOID WINAPI IntraCluster_Register(HPROTOCOL hProtocol) { register DWORD i; CreatePropertyDatabase(hProtocol, nIntraClusterGenProps + nIntraClusterPrivProps); for (i = 0; i < nIntraClusterGenProps; ++i) { AddProperty(hProtocol, &IntraCluster_GenProps[i]); } for (i = 0; i < nIntraClusterPrivProps; ++i) { AddProperty(hProtocol, &IntraCluster_PrivProps[i]); } } VOID WINAPI IntraCluster_Deregister(HPROTOCOL hProtocol) { DestroyPropertyDatabase(hProtocol); } LPBYTE WINAPI IntraCluster_RecognizeFrame(HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD MacType, DWORD FrameLength, HPROTOCOL hPreviousProtocol, DWORD hPreviousProtocolOffset, LPDWORD ProtocolStatusCode, LPHPROTOCOL hNextProtocol, LPDWORD InstData) { HPROTOCOL hNext=NULL; // next protocol to hand off to... WORD nStubLength; *ProtocolStatusCode = PROTOCOL_STATUS_CLAIMED; #ifdef SSP_DECODE // IF MSRPC VERSION == 4 AND AUTHPROTID !=0 THEN PASS OFF TO SSP if((*(MacFrame + hPreviousProtocolOffset) == 4) && (*(MacFrame + hPreviousProtocolOffset + 78))) { hNext = GetProtocolFromName("SSP"); if(hNext) { *ProtocolStatusCode = PROTOCOL_STATUS_NEXT_PROTOCOL; *hNextProtocol = hNext; nStubLength = *((LPWORD)(MacFrame + hPreviousProtocolOffset + 74)); return(lpFrame + nStubLength); } } #endif return(NULL); } DWORD WINAPI IntraCluster_FormatProperties(HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD nPropertyInsts, LPPROPERTYINST lpInst) { while (nPropertyInsts--) { ((FORMAT)lpInst->lpPropertyInfo->InstanceData)(lpInst); lpInst++; } return(NMERR_SUCCESS); } LPBYTE WINAPI IntraCluster_AttachProperties(HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD MacType, DWORD FrameLength, HPROTOCOL hPreviousProtocol, DWORD hPreviousProtocolOffset, DWORD InstData) { CHAR AuthenticationProtocolID = 0; WORD nRPCLength; CHAR AuthenticationLevel; DWORD procedureNum = InstData & PROCNUM_MASK; // IF THE MSRPC VERSION IS 4 LOOK FOR SECURITY TRAILER if(*(MacFrame + hPreviousProtocolOffset) == 4) { AuthenticationProtocolID = *(MacFrame + hPreviousProtocolOffset + 78); nRPCLength = *((LPWORD)(MacFrame + hPreviousProtocolOffset + 74)); AuthenticationLevel = *(lpFrame + nRPCLength); } // CHECK FOR ENCRYPTION if(AuthenticationProtocolID && (AuthenticationLevel == 6)) { AttachPropertyInstance(hFrame, IntraCluster_GenProps[GENPROP_ENCRYPTED].hProperty, nRPCLength, lpFrame, 0, 0, 0); } else if ( procedureNum < NUM_INTRACLUSTERPROCS ) { BOOL isRequest = ((InstData & RPC_REQUEST_MASK) != 0); DWORD summaryDataSize = sizeof(DWORD); PDWORD frameData = (PDWORD)lpFrame; DWORD summaryData[2]; LPSTR callNameString; dprintf("INTRA: procNum = %d, isReq = %d, instdata = %08X\n", procedureNum, isRequest, InstData ); InstData &= ( RPC_REQUEST_MASK | PROCNUM_MASK ); InstData |= ( INTRACLUSTER_INDEX << INTERFACE_INDEX_SHIFT ); summaryData[0] = InstData; // // mild hack to get Gum sequence number into summary data // switch ( procedureNum ) { case GUMQUEUELOCKINGUPDATE_PROC: if ( !isRequest ) { dprintf("GumQueueLockingUpdate resp: %d\n", frameData[0]); summaryData[1] = frameData[0]; summaryDataSize += sizeof( DWORD ); } break; case GUMATTEMPTJOINUPDATE_PROC: if ( isRequest ) { dprintf("GumAttemptJoinUpdate req: %d\n", frameData[3]); summaryData[1] = frameData[3]; summaryDataSize += sizeof( DWORD ); } break; case GUMUNLOCKUPDATE_PROC: if ( isRequest ) { dprintf("GumUnlockUpdate req: %d\n", frameData[1]); summaryData[1] = frameData[1]; summaryDataSize += sizeof( DWORD ); } break; case GUMUPDATENODE_PROC: if ( isRequest ) { dprintf("GumUpdateNode req: %d\n", frameData[2]); summaryData[1] = frameData[2]; summaryDataSize += sizeof( DWORD ); } break; case GUMJOINUPDATENODE_PROC: if ( isRequest ) { dprintf("GumJoinUpdateNode req: %d\n", frameData[3]); summaryData[1] = frameData[3]; summaryDataSize += sizeof( DWORD ); } break; case GUMGETNODESEQUENCE_PROC: if ( !isRequest ) { dprintf("GumGetNodeSequence resp: %d\n", frameData[0]); summaryData[1] = frameData[0]; summaryDataSize += sizeof( DWORD ); } break; case GUMATTEMPTLOCKINGUPDATE_PROC: if ( isRequest ) { dprintf("GumAttemptLockingUpdate req: %d\n", frameData[3]); summaryData[1] = frameData[3]; summaryDataSize += sizeof( DWORD ); } break; } AttachPropertyInstanceEx(hFrame, IntraCluster_GenProps[GENPROP_SUMMARY].hProperty, FrameLength, lpFrame, summaryDataSize, &summaryData, 0, 0, 0); // // get the name of the interface and attach it as a hidden property // callNameString = GET_PROCEDURE_NAME( INTRACLUSTER_INDEX, procedureNum ); AttachPropertyInstanceEx(hFrame, IntraCluster_GenProps[GENPROP_CALLNAME].hProperty, FrameLength, lpFrame, strlen( callNameString ), callNameString, 0, 15, 0); if ( summaryDataSize > sizeof( DWORD )) { AttachPropertyInstanceEx(hFrame, IntraCluster_PrivProps[INTRACLUS_PROP_SEQNUMBER].hProperty, FrameLength, lpFrame, sizeof( DWORD ), &summaryData[1], 0, 1, 0); } } else { AttachPropertyInstance(hFrame, IntraCluster_GenProps[GENPROP_ERROR_BAD_OPCODE].hProperty, FrameLength, lpFrame, 0, 0, 0); } return(NULL); } /* * Interface ExtroCluster, protocol RPC_ExtroCluster: */ VOID WINAPI ExtroCluster_Register(HPROTOCOL hProtocol) { register DWORD i; CreatePropertyDatabase(hProtocol, nExtroClusterGenProps); for (i = 0; i < nExtroClusterGenProps; ++i) { AddProperty(hProtocol, &ExtroCluster_GenProps[i]); } } VOID WINAPI ExtroCluster_Deregister(HPROTOCOL hProtocol) { DestroyPropertyDatabase(hProtocol); } LPBYTE WINAPI ExtroCluster_RecognizeFrame(HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD MacType, DWORD FrameLength, HPROTOCOL hPreviousProtocol, DWORD hPreviousProtocolOffset, LPDWORD ProtocolStatusCode, LPHPROTOCOL hNextProtocol, LPDWORD InstData) { HPROTOCOL hNext=NULL; // next protocol to hand off to... WORD nStubLength; *ProtocolStatusCode = PROTOCOL_STATUS_CLAIMED; #ifdef SSP_DECODE // IF MSRPC VERSION == 4 AND AUTHPROTID !=0 THEN PASS OFF TO SSP if((*(MacFrame + hPreviousProtocolOffset) == 4) && (*(MacFrame + hPreviousProtocolOffset + 78))) { hNext = GetProtocolFromName("SSP"); if(hNext) { *ProtocolStatusCode = PROTOCOL_STATUS_NEXT_PROTOCOL; *hNextProtocol = hNext; nStubLength = *((LPWORD)(MacFrame + hPreviousProtocolOffset + 74)); return(lpFrame + nStubLength); } } #endif return(NULL); } DWORD WINAPI ExtroCluster_FormatProperties(HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD nPropertyInsts, LPPROPERTYINST lpInst) { while (nPropertyInsts--) { ((FORMAT)lpInst->lpPropertyInfo->InstanceData)(lpInst); lpInst++; } return(NMERR_SUCCESS); } LPBYTE WINAPI ExtroCluster_AttachProperties(HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD MacType, DWORD FrameLength, HPROTOCOL hPreviousProtocol, DWORD hPreviousProtocolOffset, DWORD InstData) { CHAR AuthenticationProtocolID = 0; WORD nRPCLength; CHAR AuthenticationLevel; DWORD procedureNum = InstData & PROCNUM_MASK; // IF THE MSRPC VERSION IS 4 LOOK FOR SECURITY TRAILER if(*(MacFrame + hPreviousProtocolOffset) == 4) { AuthenticationProtocolID = *(MacFrame + hPreviousProtocolOffset + 78); nRPCLength = *((LPWORD)(MacFrame + hPreviousProtocolOffset + 74)); AuthenticationLevel = *(lpFrame + nRPCLength); } // CHECK FOR ENCRYPTION if(AuthenticationProtocolID && (AuthenticationLevel == 6)) { AttachPropertyInstance(hFrame, ExtroCluster_GenProps[GENPROP_ENCRYPTED].hProperty, nRPCLength, lpFrame, 0, 0, 0); } else if ( procedureNum < NUM_EXTROCLUSTERPROCS ) { LPSTR callNameString; InstData &= ( RPC_REQUEST_MASK | PROCNUM_MASK ); InstData |= ( EXTROCLUSTER_INDEX << INTERFACE_INDEX_SHIFT ); dprintf("EXTRO: procNum = %d, instdata = %08X\n", procedureNum, InstData ); AttachPropertyInstanceEx(hFrame, ExtroCluster_GenProps[GENPROP_SUMMARY].hProperty, FrameLength, lpFrame, sizeof(DWORD), &InstData, 0, 0, 0); // // get the name of the interface and attach it as a hidden property // callNameString = GET_PROCEDURE_NAME( EXTROCLUSTER_INDEX, procedureNum ); AttachPropertyInstanceEx(hFrame, ExtroCluster_GenProps[GENPROP_CALLNAME].hProperty, FrameLength, lpFrame, strlen( callNameString ), callNameString, 0, 15, 0); } else { AttachPropertyInstance(hFrame, ExtroCluster_GenProps[GENPROP_ERROR_BAD_OPCODE].hProperty, FrameLength, lpFrame, 0, 0, 0); } return(NULL); } /* * Interface clusapi, protocol RPC_clusapi: */ VOID WINAPI Clusapi_Register( HPROTOCOL hProtocol ) { register DWORD i; CreatePropertyDatabase(hProtocol, nClusapiGenProps); for (i = 0; i < nClusapiGenProps; ++i) { AddProperty(hProtocol, &Clusapi_GenProps[i]); } } VOID WINAPI Clusapi_Deregister( HPROTOCOL hProtocol ) { DestroyPropertyDatabase(hProtocol); } LPBYTE WINAPI Clusapi_RecognizeFrame( HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD MacType, DWORD FrameLength, HPROTOCOL hPreviousProtocol, DWORD hPreviousProtocolOffset, LPDWORD ProtocolStatusCode, LPHPROTOCOL hNextProtocol, LPDWORD InstData ) { HPROTOCOL hNext=NULL; // next protocol to hand off to... WORD nStubLength; *ProtocolStatusCode = PROTOCOL_STATUS_CLAIMED; #ifdef SSP_DECODE // IF MSRPC VERSION == 4 AND AUTHPROTID !=0 THEN PASS OFF TO SSP if((*(MacFrame + hPreviousProtocolOffset) == 4) && (*(MacFrame + hPreviousProtocolOffset + 78))) { hNext = GetProtocolFromName("SSP"); if(hNext) { *ProtocolStatusCode = PROTOCOL_STATUS_NEXT_PROTOCOL; *hNextProtocol = hNext; nStubLength = *((LPWORD)(MacFrame + hPreviousProtocolOffset + 74)); return(lpFrame + nStubLength); } } #endif return(NULL); } DWORD WINAPI Clusapi_FormatProperties( HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD nPropertyInsts, LPPROPERTYINST lpInst ) { while (nPropertyInsts--) { ((FORMAT)lpInst->lpPropertyInfo->InstanceData)(lpInst); lpInst++; } return(NMERR_SUCCESS); } LPBYTE WINAPI Clusapi_AttachProperties( HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD MacType, DWORD FrameLength, HPROTOCOL hPreviousProtocol, DWORD hPreviousProtocolOffset, DWORD InstData ) { CHAR AuthenticationProtocolID = 0; WORD nRPCLength; CHAR AuthenticationLevel; DWORD procedureNum = InstData & PROCNUM_MASK; // IF THE MSRPC VERSION IS 4 LOOK FOR SECURITY TRAILER if(*(MacFrame + hPreviousProtocolOffset) == 4) { AuthenticationProtocolID = *(MacFrame + hPreviousProtocolOffset + 78); nRPCLength = *((LPWORD)(MacFrame + hPreviousProtocolOffset + 74)); AuthenticationLevel = *(lpFrame + nRPCLength); } // CHECK FOR ENCRYPTION if(AuthenticationProtocolID && (AuthenticationLevel == 6)) { AttachPropertyInstance(hFrame, Clusapi_GenProps[GENPROP_ENCRYPTED].hProperty, nRPCLength, lpFrame, 0, 0, 0); } else if ( procedureNum < NUM_CLUSAPIPROCS ) { LPSTR callNameString; InstData &= ( RPC_REQUEST_MASK | PROCNUM_MASK ); InstData |= ( CLUSAPI_INDEX << INTERFACE_INDEX_SHIFT ); dprintf("CLUSAPI: procNum = %d, instdata = %08X\n", procedureNum, InstData ); AttachPropertyInstanceEx(hFrame, Clusapi_GenProps[GENPROP_SUMMARY].hProperty, FrameLength, lpFrame, sizeof(DWORD), &InstData, 0, 0, 0); // // get the name of the interface and attach it as a hidden property // callNameString = GET_PROCEDURE_NAME( CLUSAPI_INDEX, procedureNum ); AttachPropertyInstanceEx(hFrame, Clusapi_GenProps[GENPROP_CALLNAME].hProperty, FrameLength, lpFrame, strlen( callNameString ), callNameString, 0, 15, 0); } else { AttachPropertyInstance(hFrame, Clusapi_GenProps[GENPROP_ERROR_BAD_OPCODE].hProperty, FrameLength, lpFrame, 0, 0, 0); } return(NULL); } /* * Interface JoinVersion, protocol RPC_JoinVersion: */ VOID WINAPI JoinVersion_Register(HPROTOCOL hProtocol) { register DWORD i; CreatePropertyDatabase(hProtocol, nJoinVersionGenProps); for (i = 0; i < nJoinVersionGenProps; ++i) { AddProperty(hProtocol, &JoinVersion_GenProps[i]); } } VOID WINAPI JoinVersion_Deregister(HPROTOCOL hProtocol) { DestroyPropertyDatabase(hProtocol); } LPBYTE WINAPI JoinVersion_RecognizeFrame( HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD MacType, DWORD FrameLength, HPROTOCOL hPreviousProtocol, DWORD hPreviousProtocolOffset, LPDWORD ProtocolStatusCode, LPHPROTOCOL hNextProtocol, LPDWORD InstData ) { HPROTOCOL hNext=NULL; // next protocol to hand off to... WORD nStubLength; *ProtocolStatusCode = PROTOCOL_STATUS_CLAIMED; #ifdef SSP_DECODE // IF MSRPC VERSION == 4 AND AUTHPROTID !=0 THEN PASS OFF TO SSP if((*(MacFrame + hPreviousProtocolOffset) == 4) && (*(MacFrame + hPreviousProtocolOffset + 78))) { hNext = GetProtocolFromName("SSP"); if(hNext) { *ProtocolStatusCode = PROTOCOL_STATUS_NEXT_PROTOCOL; *hNextProtocol = hNext; nStubLength = *((LPWORD)(MacFrame + hPreviousProtocolOffset + 74)); return(lpFrame + nStubLength); } } #endif return(NULL); } DWORD WINAPI JoinVersion_FormatProperties( HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD nPropertyInsts, LPPROPERTYINST lpInst ) { while (nPropertyInsts--) { ((FORMAT)lpInst->lpPropertyInfo->InstanceData)(lpInst); lpInst++; } return(NMERR_SUCCESS); } LPBYTE WINAPI JoinVersion_AttachProperties( HFRAME hFrame, LPBYTE MacFrame, LPBYTE lpFrame, DWORD MacType, DWORD FrameLength, HPROTOCOL hPreviousProtocol, DWORD hPreviousProtocolOffset, DWORD InstData ) { CHAR AuthenticationProtocolID = 0; WORD nRPCLength; CHAR AuthenticationLevel; DWORD procedureNum = InstData & PROCNUM_MASK; // IF THE MSRPC VERSION IS 4 LOOK FOR SECURITY TRAILER if(*(MacFrame + hPreviousProtocolOffset) == 4) { AuthenticationProtocolID = *(MacFrame + hPreviousProtocolOffset + 78); nRPCLength = *((LPWORD)(MacFrame + hPreviousProtocolOffset + 74)); AuthenticationLevel = *(lpFrame + nRPCLength); } // CHECK FOR ENCRYPTION if(AuthenticationProtocolID && (AuthenticationLevel == 6)) { AttachPropertyInstance(hFrame, JoinVersion_GenProps[GENPROP_ENCRYPTED].hProperty, nRPCLength, lpFrame, 0, 0, 0); } else if ( procedureNum < NUM_JOINVERSIONPROCS ) { LPSTR callNameString; InstData &= ( RPC_REQUEST_MASK | PROCNUM_MASK ); InstData |= ( JOINVERSION_INDEX << INTERFACE_INDEX_SHIFT ); dprintf("JOINVERSION: procNum = %d, instdata = %08X\n", procedureNum, InstData ); AttachPropertyInstanceEx(hFrame, JoinVersion_GenProps[GENPROP_SUMMARY].hProperty, FrameLength, lpFrame, sizeof(DWORD), &InstData, 0, 0, 0); // // get the name of the interface and attach it as a hidden property // callNameString = GET_PROCEDURE_NAME( JOINVERSION_INDEX, procedureNum ); AttachPropertyInstanceEx(hFrame, JoinVersion_GenProps[GENPROP_CALLNAME].hProperty, FrameLength, lpFrame, strlen( callNameString ), callNameString, 0, 15, 0); } else { AttachPropertyInstance(hFrame, JoinVersion_GenProps[GENPROP_ERROR_BAD_OPCODE].hProperty, FrameLength, lpFrame, 0, 0, 0); } return(NULL); }