2012-05-05 05:50:32 +04:00
|
|
|
/**
|
|
|
|
* WinPR: Windows Portable Runtime
|
|
|
|
* Microsoft Remote Procedure Call (MSRPC)
|
|
|
|
*
|
|
|
|
* Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
2012-08-15 01:20:53 +04:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
2012-05-05 05:50:32 +04:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#include <winpr/rpc.h>
|
|
|
|
|
|
|
|
#include "ndr_array.h"
|
|
|
|
#include "ndr_context.h"
|
|
|
|
#include "ndr_pointer.h"
|
|
|
|
#include "ndr_simple.h"
|
|
|
|
#include "ndr_string.h"
|
|
|
|
#include "ndr_structure.h"
|
|
|
|
#include "ndr_union.h"
|
|
|
|
|
|
|
|
#include "ndr_private.h"
|
|
|
|
|
|
|
|
void NdrpAlignLength(unsigned long* length, unsigned int alignment)
|
|
|
|
{
|
|
|
|
*length = (*length + alignment - 1) & ~(alignment - 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
void NdrpIncrementLength(unsigned long* length, unsigned int size)
|
|
|
|
{
|
|
|
|
*length += size;
|
|
|
|
}
|
|
|
|
|
|
|
|
const char* FC_TYPE_STRINGS[] =
|
|
|
|
{
|
|
|
|
"FC_ZERO",
|
|
|
|
"FC_BYTE",
|
|
|
|
"FC_CHAR",
|
|
|
|
"FC_SMALL",
|
|
|
|
"FC_USMALL",
|
|
|
|
"FC_WCHAR",
|
|
|
|
"FC_SHORT",
|
|
|
|
"FC_USHORT",
|
|
|
|
"FC_LONG",
|
|
|
|
"FC_ULONG",
|
|
|
|
"FC_FLOAT",
|
|
|
|
"FC_HYPER",
|
|
|
|
"FC_DOUBLE",
|
|
|
|
"FC_ENUM16",
|
|
|
|
"FC_ENUM32",
|
|
|
|
"FC_IGNORE",
|
|
|
|
"FC_ERROR_STATUS_T",
|
|
|
|
"FC_RP",
|
|
|
|
"FC_UP",
|
|
|
|
"FC_OP",
|
|
|
|
"FC_FP",
|
|
|
|
"FC_STRUCT",
|
|
|
|
"FC_PSTRUCT",
|
|
|
|
"FC_CSTRUCT",
|
|
|
|
"FC_CPSTRUCT",
|
|
|
|
"FC_CVSTRUCT",
|
|
|
|
"FC_BOGUS_STRUCT",
|
|
|
|
"FC_CARRAY",
|
|
|
|
"FC_CVARRAY",
|
|
|
|
"FC_SMFARRAY",
|
|
|
|
"FC_LGFARRAY",
|
|
|
|
"FC_SMVARRAY",
|
|
|
|
"FC_LGVARRAY",
|
|
|
|
"FC_BOGUS_ARRAY",
|
|
|
|
"FC_C_CSTRING",
|
|
|
|
"FC_C_BSTRING",
|
|
|
|
"FC_C_SSTRING",
|
|
|
|
"FC_C_WSTRING",
|
|
|
|
"FC_CSTRING",
|
|
|
|
"FC_BSTRING",
|
|
|
|
"FC_SSTRING",
|
|
|
|
"FC_WSTRING",
|
|
|
|
"FC_ENCAPSULATED_UNION",
|
|
|
|
"FC_NON_ENCAPSULATED_UNION",
|
|
|
|
"FC_BYTE_COUNT_POINTER",
|
|
|
|
"FC_TRANSMIT_AS",
|
|
|
|
"FC_REPRESENT_AS",
|
|
|
|
"FC_IP",
|
|
|
|
"FC_BIND_CONTEXT",
|
|
|
|
"FC_BIND_GENERIC",
|
|
|
|
"FC_BIND_PRIMITIVE",
|
|
|
|
"FC_AUTO_HANDLE",
|
|
|
|
"FC_CALLBACK_HANDLE",
|
|
|
|
"FC_UNUSED1",
|
|
|
|
"FC_POINTER",
|
|
|
|
"FC_ALIGNM2",
|
|
|
|
"FC_ALIGNM4",
|
|
|
|
"FC_ALIGNM8",
|
|
|
|
"FC_UNUSED2",
|
|
|
|
"FC_UNUSED3",
|
|
|
|
"FC_UNUSED4",
|
|
|
|
"FC_STRUCTPAD1",
|
|
|
|
"FC_STRUCTPAD2",
|
|
|
|
"FC_STRUCTPAD3",
|
|
|
|
"FC_STRUCTPAD4",
|
|
|
|
"FC_STRUCTPAD5",
|
|
|
|
"FC_STRUCTPAD6",
|
|
|
|
"FC_STRUCTPAD7",
|
|
|
|
"FC_STRING_SIZED",
|
|
|
|
"FC_UNUSED5",
|
|
|
|
"FC_NO_REPEAT",
|
|
|
|
"FC_FIXED_REPEAT",
|
|
|
|
"FC_VARIABLE_REPEAT",
|
|
|
|
"FC_FIXED_OFFSET",
|
|
|
|
"FC_VARIABLE_OFFSET",
|
|
|
|
"FC_PP",
|
|
|
|
"FC_EMBEDDED_COMPLEX",
|
|
|
|
"FC_IN_PARAM",
|
|
|
|
"FC_IN_PARAM_BASETYPE",
|
|
|
|
"FC_IN_PARAM_NO_FREE_INST",
|
|
|
|
"FC_IN_OUT_PARAM",
|
|
|
|
"FC_OUT_PARAM",
|
|
|
|
"FC_RETURN_PARAM",
|
|
|
|
"FC_RETURN_PARAM_BASETYPE",
|
|
|
|
"FC_DEREFERENCE",
|
|
|
|
"FC_DIV_2",
|
|
|
|
"FC_MULT_2",
|
|
|
|
"FC_ADD_1",
|
|
|
|
"FC_SUB_1",
|
|
|
|
"FC_CALLBACK",
|
|
|
|
"FC_CONSTANT_IID",
|
|
|
|
"FC_END",
|
|
|
|
"FC_PAD",
|
|
|
|
"", "", "", "", "", "",
|
|
|
|
"", "", "", "", "", "",
|
|
|
|
"", "", "", "", "", "",
|
|
|
|
"", "", "", "", "", "",
|
|
|
|
"FC_SPLIT_DEREFERENCE",
|
|
|
|
"FC_SPLIT_DIV_2",
|
|
|
|
"FC_SPLIT_MULT_2",
|
|
|
|
"FC_SPLIT_ADD_1",
|
|
|
|
"FC_SPLIT_SUB_1",
|
|
|
|
"FC_SPLIT_CALLBACK",
|
|
|
|
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
|
|
|
|
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
|
|
|
|
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
|
|
|
|
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
|
|
|
|
"FC_HARD_STRUCT",
|
|
|
|
"FC_TRANSMIT_AS_PTR",
|
|
|
|
"FC_REPRESENT_AS_PTR",
|
|
|
|
"FC_USER_MARSHAL",
|
|
|
|
"FC_PIPE",
|
|
|
|
"FC_BLKHOLE",
|
|
|
|
"FC_RANGE",
|
|
|
|
"FC_INT3264",
|
|
|
|
"FC_UINT3264",
|
|
|
|
"FC_END_OF_UNIVERSE",
|
|
|
|
};
|
|
|
|
|
|
|
|
const NDR_TYPE_SIZE_ROUTINE pfnSizeRoutines[] =
|
|
|
|
{
|
|
|
|
NULL, /* FC_ZERO */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_BYTE */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_CHAR */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_SMALL */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_USMALL */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_WCHAR */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_SHORT */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_USHORT */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_LONG */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_ULONG */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_FLOAT */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_HYPER */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_DOUBLE */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_ENUM16 */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_ENUM32 */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_IGNORE */
|
|
|
|
NdrSimpleTypeBufferSize, /* FC_ERROR_STATUS_T */
|
|
|
|
NdrPointerBufferSize, /* FC_RP */
|
|
|
|
NdrPointerBufferSize, /* FC_UP */
|
|
|
|
NdrPointerBufferSize, /* FC_OP */
|
|
|
|
NdrPointerBufferSize, /* FC_FP */
|
|
|
|
NdrSimpleStructBufferSize, /* FC_STRUCT */
|
|
|
|
NdrSimpleStructBufferSize, /* FC_PSTRUCT */
|
|
|
|
NdrConformantStructBufferSize, /* FC_CSTRUCT */
|
|
|
|
NdrConformantStructBufferSize, /* FC_CPSTRUCT */
|
|
|
|
NdrConformantVaryingStructBufferSize, /* FC_CVSTRUCT */
|
|
|
|
NdrComplexStructBufferSize, /* FC_BOGUS_STRUCT */
|
|
|
|
NdrConformantArrayBufferSize, /* FC_CARRAY */
|
|
|
|
NdrConformantVaryingArrayBufferSize, /* FC_CVARRAY */
|
|
|
|
NdrFixedArrayBufferSize, /* FC_SMFARRAY */
|
|
|
|
NdrFixedArrayBufferSize, /* FC_LGFARRAY */
|
|
|
|
NdrVaryingArrayBufferSize, /* FC_SMVARRAY */
|
|
|
|
NdrVaryingArrayBufferSize, /* FC_LGVARRAY */
|
|
|
|
NdrComplexArrayBufferSize, /* FC_BOGUS_ARRAY */
|
|
|
|
NdrConformantStringBufferSize, /* FC_C_CSTRING */
|
|
|
|
NULL, /* FC_C_BSTRING */
|
|
|
|
NULL, /* FC_C_SSTRING */
|
|
|
|
NdrConformantStringBufferSize, /* FC_C_WSTRING */
|
|
|
|
NdrNonConformantStringBufferSize, /* FC_CSTRING */
|
|
|
|
NULL, /* FC_BSTRING */
|
|
|
|
NULL, /* FC_SSTRING */
|
|
|
|
NULL, /* FC_WSTRING */
|
|
|
|
NdrEncapsulatedUnionBufferSize, /* FC_ENCAPSULATED_UNION */
|
|
|
|
NdrNonEncapsulatedUnionBufferSize, /* FC_NON_ENCAPSULATED_UNION */
|
|
|
|
NdrByteCountPointerBufferSize, /* FC_BYTE_COUNT_POINTER */
|
|
|
|
NULL, /* FC_TRANSMIT_AS */
|
|
|
|
NULL, /* FC_REPRESENT_AS */
|
|
|
|
NULL, /* FC_IP */
|
|
|
|
NdrContextHandleBufferSize, /* FC_BIND_CONTEXT */
|
|
|
|
NULL, /* FC_BIND_GENERIC */
|
|
|
|
NULL, /* FC_BIND_PRIMITIVE */
|
|
|
|
NULL, /* FC_AUTO_HANDLE */
|
|
|
|
NULL, /* FC_CALLBACK_HANDLE */
|
|
|
|
NULL, /* FC_UNUSED1 */
|
|
|
|
NULL, /* FC_POINTER */
|
|
|
|
NULL, /* FC_ALIGNM2 */
|
|
|
|
NULL, /* FC_ALIGNM4 */
|
|
|
|
NULL, /* FC_ALIGNM8 */
|
|
|
|
NULL, /* FC_UNUSED2 */
|
|
|
|
NULL, /* FC_UNUSED3 */
|
|
|
|
NULL, /* FC_UNUSED4 */
|
|
|
|
NULL, /* FC_STRUCTPAD1 */
|
|
|
|
NULL, /* FC_STRUCTPAD2 */
|
|
|
|
NULL, /* FC_STRUCTPAD3 */
|
|
|
|
NULL, /* FC_STRUCTPAD4 */
|
|
|
|
NULL, /* FC_STRUCTPAD5 */
|
|
|
|
NULL, /* FC_STRUCTPAD6 */
|
|
|
|
NULL, /* FC_STRUCTPAD7 */
|
|
|
|
NULL, /* FC_STRING_SIZED */
|
|
|
|
NULL, /* FC_UNUSED5 */
|
|
|
|
NULL, /* FC_NO_REPEAT */
|
|
|
|
NULL, /* FC_FIXED_REPEAT */
|
|
|
|
NULL, /* FC_VARIABLE_REPEAT */
|
|
|
|
NULL, /* FC_FIXED_OFFSET */
|
|
|
|
NULL, /* FC_VARIABLE_OFFSET */
|
|
|
|
NULL, /* FC_PP */
|
|
|
|
NULL, /* FC_EMBEDDED_COMPLEX */
|
|
|
|
NULL, /* FC_IN_PARAM */
|
|
|
|
NULL, /* FC_IN_PARAM_BASETYPE */
|
|
|
|
NULL, /* FC_IN_PARAM_NO_FREE_INST */
|
|
|
|
NULL, /* FC_IN_OUT_PARAM */
|
|
|
|
NULL, /* FC_OUT_PARAM */
|
|
|
|
NULL, /* FC_RETURN_PARAM */
|
|
|
|
NULL, /* FC_RETURN_PARAM_BASETYPE */
|
|
|
|
NULL, /* FC_DEREFERENCE */
|
|
|
|
NULL, /* FC_DIV_2 */
|
|
|
|
NULL, /* FC_MULT_2 */
|
|
|
|
NULL, /* FC_ADD_1 */
|
|
|
|
NULL, /* FC_SUB_1 */
|
|
|
|
NULL, /* FC_CALLBACK */
|
|
|
|
NULL, /* FC_CONSTANT_IID */
|
|
|
|
NULL, /* FC_END */
|
|
|
|
NULL, /* FC_PAD */
|
|
|
|
};
|
|
|
|
|
|
|
|
const NDR_TYPE_MARSHALL_ROUTINE pfnMarshallRoutines[] =
|
|
|
|
{
|
|
|
|
NULL, /* FC_ZERO */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_BYTE */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_CHAR */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_SMALL */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_USMALL */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_WCHAR */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_SHORT */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_USHORT */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_LONG */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_ULONG */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_FLOAT */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_HYPER */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_DOUBLE */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_ENUM16 */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_ENUM32 */
|
|
|
|
NdrSimpleTypeMarshall, /* FC_IGNORE */
|
|
|
|
NULL, /* FC_ERROR_STATUS_T */
|
|
|
|
NULL, /* FC_RP */
|
|
|
|
NULL, /* FC_UP */
|
|
|
|
NULL, /* FC_OP */
|
|
|
|
NULL, /* FC_FP */
|
|
|
|
NULL, /* FC_STRUCT */
|
|
|
|
NULL, /* FC_PSTRUCT */
|
|
|
|
NULL, /* FC_CSTRUCT */
|
|
|
|
NULL, /* FC_CPSTRUCT */
|
|
|
|
NULL, /* FC_CVSTRUCT */
|
|
|
|
NULL, /* FC_BOGUS_STRUCT */
|
|
|
|
NULL, /* FC_CARRAY */
|
|
|
|
NULL, /* FC_CVARRAY */
|
|
|
|
NULL, /* FC_SMFARRAY */
|
|
|
|
NULL, /* FC_LGFARRAY */
|
|
|
|
NULL, /* FC_SMVARRAY */
|
|
|
|
NULL, /* FC_LGVARRAY */
|
|
|
|
NULL, /* FC_BOGUS_ARRAY */
|
|
|
|
NULL, /* FC_C_CSTRING */
|
|
|
|
NULL, /* FC_C_BSTRING */
|
|
|
|
NULL, /* FC_C_SSTRING */
|
|
|
|
NULL, /* FC_C_WSTRING */
|
|
|
|
NULL, /* FC_CSTRING */
|
|
|
|
NULL, /* FC_BSTRING */
|
|
|
|
NULL, /* FC_SSTRING */
|
|
|
|
NULL, /* FC_WSTRING */
|
|
|
|
NULL, /* FC_ENCAPSULATED_UNION */
|
|
|
|
NULL, /* FC_NON_ENCAPSULATED_UNION */
|
|
|
|
NULL, /* FC_BYTE_COUNT_POINTER */
|
|
|
|
NULL, /* FC_TRANSMIT_AS */
|
|
|
|
NULL, /* FC_REPRESENT_AS */
|
|
|
|
NULL, /* FC_IP */
|
|
|
|
NULL, /* FC_BIND_CONTEXT */
|
|
|
|
NULL, /* FC_BIND_GENERIC */
|
|
|
|
NULL, /* FC_BIND_PRIMITIVE */
|
|
|
|
NULL, /* FC_AUTO_HANDLE */
|
|
|
|
NULL, /* FC_CALLBACK_HANDLE */
|
|
|
|
NULL, /* FC_UNUSED1 */
|
|
|
|
NULL, /* FC_POINTER */
|
|
|
|
NULL, /* FC_ALIGNM2 */
|
|
|
|
NULL, /* FC_ALIGNM4 */
|
|
|
|
NULL, /* FC_ALIGNM8 */
|
|
|
|
NULL, /* FC_UNUSED2 */
|
|
|
|
NULL, /* FC_UNUSED3 */
|
|
|
|
NULL, /* FC_UNUSED4 */
|
|
|
|
NULL, /* FC_STRUCTPAD1 */
|
|
|
|
NULL, /* FC_STRUCTPAD2 */
|
|
|
|
NULL, /* FC_STRUCTPAD3 */
|
|
|
|
NULL, /* FC_STRUCTPAD4 */
|
|
|
|
NULL, /* FC_STRUCTPAD5 */
|
|
|
|
NULL, /* FC_STRUCTPAD6 */
|
|
|
|
NULL, /* FC_STRUCTPAD7 */
|
|
|
|
NULL, /* FC_STRING_SIZED */
|
|
|
|
NULL, /* FC_UNUSED5 */
|
|
|
|
NULL, /* FC_NO_REPEAT */
|
|
|
|
NULL, /* FC_FIXED_REPEAT */
|
|
|
|
NULL, /* FC_VARIABLE_REPEAT */
|
|
|
|
NULL, /* FC_FIXED_OFFSET */
|
|
|
|
NULL, /* FC_VARIABLE_OFFSET */
|
|
|
|
NULL, /* FC_PP */
|
|
|
|
NULL, /* FC_EMBEDDED_COMPLEX */
|
|
|
|
NULL, /* FC_IN_PARAM */
|
|
|
|
NULL, /* FC_IN_PARAM_BASETYPE */
|
|
|
|
NULL, /* FC_IN_PARAM_NO_FREE_INST */
|
|
|
|
NULL, /* FC_IN_OUT_PARAM */
|
|
|
|
NULL, /* FC_OUT_PARAM */
|
|
|
|
NULL, /* FC_RETURN_PARAM */
|
|
|
|
NULL, /* FC_RETURN_PARAM_BASETYPE */
|
|
|
|
NULL, /* FC_DEREFERENCE */
|
|
|
|
NULL, /* FC_DIV_2 */
|
|
|
|
NULL, /* FC_MULT_2 */
|
|
|
|
NULL, /* FC_ADD_1 */
|
|
|
|
NULL, /* FC_SUB_1 */
|
|
|
|
NULL, /* FC_CALLBACK */
|
|
|
|
NULL, /* FC_CONSTANT_IID */
|
|
|
|
NULL, /* FC_END */
|
|
|
|
NULL, /* FC_PAD */
|
|
|
|
};
|
|
|
|
|
|
|
|
const NDR_TYPE_UNMARSHALL_ROUTINE pfnUnmarshallRoutines[] =
|
|
|
|
{
|
|
|
|
NULL, /* FC_ZERO */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_BYTE */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_CHAR */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_SMALL */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_USMALL */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_WCHAR */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_SHORT */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_USHORT */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_LONG */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_ULONG */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_FLOAT */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_HYPER */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_DOUBLE */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_ENUM16 */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_ENUM32 */
|
|
|
|
NdrSimpleTypeUnmarshall, /* FC_IGNORE */
|
|
|
|
NULL, /* FC_ERROR_STATUS_T */
|
|
|
|
NULL, /* FC_RP */
|
|
|
|
NULL, /* FC_UP */
|
|
|
|
NULL, /* FC_OP */
|
|
|
|
NULL, /* FC_FP */
|
|
|
|
NULL, /* FC_STRUCT */
|
|
|
|
NULL, /* FC_PSTRUCT */
|
|
|
|
NULL, /* FC_CSTRUCT */
|
|
|
|
NULL, /* FC_CPSTRUCT */
|
|
|
|
NULL, /* FC_CVSTRUCT */
|
|
|
|
NULL, /* FC_BOGUS_STRUCT */
|
|
|
|
NULL, /* FC_CARRAY */
|
|
|
|
NULL, /* FC_CVARRAY */
|
|
|
|
NULL, /* FC_SMFARRAY */
|
|
|
|
NULL, /* FC_LGFARRAY */
|
|
|
|
NULL, /* FC_SMVARRAY */
|
|
|
|
NULL, /* FC_LGVARRAY */
|
|
|
|
NULL, /* FC_BOGUS_ARRAY */
|
|
|
|
NULL, /* FC_C_CSTRING */
|
|
|
|
NULL, /* FC_C_BSTRING */
|
|
|
|
NULL, /* FC_C_SSTRING */
|
|
|
|
NULL, /* FC_C_WSTRING */
|
|
|
|
NULL, /* FC_CSTRING */
|
|
|
|
NULL, /* FC_BSTRING */
|
|
|
|
NULL, /* FC_SSTRING */
|
|
|
|
NULL, /* FC_WSTRING */
|
|
|
|
NULL, /* FC_ENCAPSULATED_UNION */
|
|
|
|
NULL, /* FC_NON_ENCAPSULATED_UNION */
|
|
|
|
NULL, /* FC_BYTE_COUNT_POINTER */
|
|
|
|
NULL, /* FC_TRANSMIT_AS */
|
|
|
|
NULL, /* FC_REPRESENT_AS */
|
|
|
|
NULL, /* FC_IP */
|
|
|
|
NULL, /* FC_BIND_CONTEXT */
|
|
|
|
NULL, /* FC_BIND_GENERIC */
|
|
|
|
NULL, /* FC_BIND_PRIMITIVE */
|
|
|
|
NULL, /* FC_AUTO_HANDLE */
|
|
|
|
NULL, /* FC_CALLBACK_HANDLE */
|
|
|
|
NULL, /* FC_UNUSED1 */
|
|
|
|
NULL, /* FC_POINTER */
|
|
|
|
NULL, /* FC_ALIGNM2 */
|
|
|
|
NULL, /* FC_ALIGNM4 */
|
|
|
|
NULL, /* FC_ALIGNM8 */
|
|
|
|
NULL, /* FC_UNUSED2 */
|
|
|
|
NULL, /* FC_UNUSED3 */
|
|
|
|
NULL, /* FC_UNUSED4 */
|
|
|
|
NULL, /* FC_STRUCTPAD1 */
|
|
|
|
NULL, /* FC_STRUCTPAD2 */
|
|
|
|
NULL, /* FC_STRUCTPAD3 */
|
|
|
|
NULL, /* FC_STRUCTPAD4 */
|
|
|
|
NULL, /* FC_STRUCTPAD5 */
|
|
|
|
NULL, /* FC_STRUCTPAD6 */
|
|
|
|
NULL, /* FC_STRUCTPAD7 */
|
|
|
|
NULL, /* FC_STRING_SIZED */
|
|
|
|
NULL, /* FC_UNUSED5 */
|
|
|
|
NULL, /* FC_NO_REPEAT */
|
|
|
|
NULL, /* FC_FIXED_REPEAT */
|
|
|
|
NULL, /* FC_VARIABLE_REPEAT */
|
|
|
|
NULL, /* FC_FIXED_OFFSET */
|
|
|
|
NULL, /* FC_VARIABLE_OFFSET */
|
|
|
|
NULL, /* FC_PP */
|
|
|
|
NULL, /* FC_EMBEDDED_COMPLEX */
|
|
|
|
NULL, /* FC_IN_PARAM */
|
|
|
|
NULL, /* FC_IN_PARAM_BASETYPE */
|
|
|
|
NULL, /* FC_IN_PARAM_NO_FREE_INST */
|
|
|
|
NULL, /* FC_IN_OUT_PARAM */
|
|
|
|
NULL, /* FC_OUT_PARAM */
|
|
|
|
NULL, /* FC_RETURN_PARAM */
|
|
|
|
NULL, /* FC_RETURN_PARAM_BASETYPE */
|
|
|
|
NULL, /* FC_DEREFERENCE */
|
|
|
|
NULL, /* FC_DIV_2 */
|
|
|
|
NULL, /* FC_MULT_2 */
|
|
|
|
NULL, /* FC_ADD_1 */
|
|
|
|
NULL, /* FC_SUB_1 */
|
|
|
|
NULL, /* FC_CALLBACK */
|
|
|
|
NULL, /* FC_CONSTANT_IID */
|
|
|
|
NULL, /* FC_END */
|
|
|
|
NULL, /* FC_PAD */
|
|
|
|
};
|
|
|
|
|
|
|
|
const NDR_TYPE_FREE_ROUTINE pfnFreeRoutines[] =
|
|
|
|
{
|
|
|
|
NULL, /* FC_ZERO */
|
|
|
|
NdrSimpleTypeFree, /* FC_BYTE */
|
|
|
|
NdrSimpleTypeFree, /* FC_CHAR */
|
|
|
|
NdrSimpleTypeFree, /* FC_SMALL */
|
|
|
|
NdrSimpleTypeFree, /* FC_USMALL */
|
|
|
|
NdrSimpleTypeFree, /* FC_WCHAR */
|
|
|
|
NdrSimpleTypeFree, /* FC_SHORT */
|
|
|
|
NdrSimpleTypeFree, /* FC_USHORT */
|
|
|
|
NdrSimpleTypeFree, /* FC_LONG */
|
|
|
|
NdrSimpleTypeFree, /* FC_ULONG */
|
|
|
|
NdrSimpleTypeFree, /* FC_FLOAT */
|
|
|
|
NdrSimpleTypeFree, /* FC_HYPER */
|
|
|
|
NdrSimpleTypeFree, /* FC_DOUBLE */
|
|
|
|
NdrSimpleTypeFree, /* FC_ENUM16 */
|
|
|
|
NdrSimpleTypeFree, /* FC_ENUM32 */
|
|
|
|
NdrSimpleTypeFree, /* FC_IGNORE */
|
|
|
|
NULL, /* FC_ERROR_STATUS_T */
|
|
|
|
NULL, /* FC_RP */
|
|
|
|
NULL, /* FC_UP */
|
|
|
|
NULL, /* FC_OP */
|
|
|
|
NULL, /* FC_FP */
|
|
|
|
NULL, /* FC_STRUCT */
|
|
|
|
NULL, /* FC_PSTRUCT */
|
|
|
|
NULL, /* FC_CSTRUCT */
|
|
|
|
NULL, /* FC_CPSTRUCT */
|
|
|
|
NULL, /* FC_CVSTRUCT */
|
|
|
|
NULL, /* FC_BOGUS_STRUCT */
|
|
|
|
NULL, /* FC_CARRAY */
|
|
|
|
NULL, /* FC_CVARRAY */
|
|
|
|
NULL, /* FC_SMFARRAY */
|
|
|
|
NULL, /* FC_LGFARRAY */
|
|
|
|
NULL, /* FC_SMVARRAY */
|
|
|
|
NULL, /* FC_LGVARRAY */
|
|
|
|
NULL, /* FC_BOGUS_ARRAY */
|
|
|
|
NULL, /* FC_C_CSTRING */
|
|
|
|
NULL, /* FC_C_BSTRING */
|
|
|
|
NULL, /* FC_C_SSTRING */
|
|
|
|
NULL, /* FC_C_WSTRING */
|
|
|
|
NULL, /* FC_CSTRING */
|
|
|
|
NULL, /* FC_BSTRING */
|
|
|
|
NULL, /* FC_SSTRING */
|
|
|
|
NULL, /* FC_WSTRING */
|
|
|
|
NULL, /* FC_ENCAPSULATED_UNION */
|
|
|
|
NULL, /* FC_NON_ENCAPSULATED_UNION */
|
|
|
|
NULL, /* FC_BYTE_COUNT_POINTER */
|
|
|
|
NULL, /* FC_TRANSMIT_AS */
|
|
|
|
NULL, /* FC_REPRESENT_AS */
|
|
|
|
NULL, /* FC_IP */
|
|
|
|
NULL, /* FC_BIND_CONTEXT */
|
|
|
|
NULL, /* FC_BIND_GENERIC */
|
|
|
|
NULL, /* FC_BIND_PRIMITIVE */
|
|
|
|
NULL, /* FC_AUTO_HANDLE */
|
|
|
|
NULL, /* FC_CALLBACK_HANDLE */
|
|
|
|
NULL, /* FC_UNUSED1 */
|
|
|
|
NULL, /* FC_POINTER */
|
|
|
|
NULL, /* FC_ALIGNM2 */
|
|
|
|
NULL, /* FC_ALIGNM4 */
|
|
|
|
NULL, /* FC_ALIGNM8 */
|
|
|
|
NULL, /* FC_UNUSED2 */
|
|
|
|
NULL, /* FC_UNUSED3 */
|
|
|
|
NULL, /* FC_UNUSED4 */
|
|
|
|
NULL, /* FC_STRUCTPAD1 */
|
|
|
|
NULL, /* FC_STRUCTPAD2 */
|
|
|
|
NULL, /* FC_STRUCTPAD3 */
|
|
|
|
NULL, /* FC_STRUCTPAD4 */
|
|
|
|
NULL, /* FC_STRUCTPAD5 */
|
|
|
|
NULL, /* FC_STRUCTPAD6 */
|
|
|
|
NULL, /* FC_STRUCTPAD7 */
|
|
|
|
NULL, /* FC_STRING_SIZED */
|
|
|
|
NULL, /* FC_UNUSED5 */
|
|
|
|
NULL, /* FC_NO_REPEAT */
|
|
|
|
NULL, /* FC_FIXED_REPEAT */
|
|
|
|
NULL, /* FC_VARIABLE_REPEAT */
|
|
|
|
NULL, /* FC_FIXED_OFFSET */
|
|
|
|
NULL, /* FC_VARIABLE_OFFSET */
|
|
|
|
NULL, /* FC_PP */
|
|
|
|
NULL, /* FC_EMBEDDED_COMPLEX */
|
|
|
|
NULL, /* FC_IN_PARAM */
|
|
|
|
NULL, /* FC_IN_PARAM_BASETYPE */
|
|
|
|
NULL, /* FC_IN_PARAM_NO_FREE_INST */
|
|
|
|
NULL, /* FC_IN_OUT_PARAM */
|
|
|
|
NULL, /* FC_OUT_PARAM */
|
|
|
|
NULL, /* FC_RETURN_PARAM */
|
|
|
|
NULL, /* FC_RETURN_PARAM_BASETYPE */
|
|
|
|
NULL, /* FC_DEREFERENCE */
|
|
|
|
NULL, /* FC_DIV_2 */
|
|
|
|
NULL, /* FC_MULT_2 */
|
|
|
|
NULL, /* FC_ADD_1 */
|
|
|
|
NULL, /* FC_SUB_1 */
|
|
|
|
NULL, /* FC_CALLBACK */
|
|
|
|
NULL, /* FC_CONSTANT_IID */
|
|
|
|
NULL, /* FC_END */
|
|
|
|
NULL, /* FC_PAD */
|
|
|
|
};
|