rpcndr.h
来自「本源码是vc环境下的usb程序」· C头文件 代码 · 共 2,691 行 · 第 1/5 页
H
2,691 行
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
rpcndr.h
Abstract:
Definitions for stub data structures and prototypes of helper functions.
--*/
// This version of the rpcndr.h file corresponds to MIDL version 5.0.+
// used with Windows 2000/XP build 1700+
#ifndef __RPCNDR_H_VERSION__
#define __RPCNDR_H_VERSION__ ( 475 )
#endif // __RPCNDR_H_VERSION__
#ifndef __RPCNDR_H__
#define __RPCNDR_H__
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef __REQUIRED_RPCNDR_H_VERSION__
#if ( __RPCNDR_H_VERSION__ < __REQUIRED_RPCNDR_H_VERSION__ )
#error incorrect <rpcndr.h> version. Use the header that matches with the MIDL compiler.
#endif
#endif
#include <pshpack8.h>
#include <basetsd.h>
#include <rpcnsip.h>
#ifdef __cplusplus
extern "C" {
#endif
/****************************************************************************
Network Computing Architecture (NCA) definition:
Network Data Representation: (NDR) Label format:
An unsigned long (32 bits) with the following layout:
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+---------------+---------------+---------------+-------+-------+
| Reserved | Reserved |Floating point | Int | Char |
| | |Representation | Rep. | Rep. |
+---------------+---------------+---------------+-------+-------+
Where
Reserved:
Must be zero (0) for NCA 1.5 and NCA 2.0.
Floating point Representation is:
0 - IEEE
1 - VAX
2 - Cray
3 - IBM
Int Rep. is Integer Representation:
0 - Big Endian
1 - Little Endian
Char Rep. is Character Representation:
0 - ASCII
1 - EBCDIC
The Microsoft Local Data Representation (for all platforms which are
of interest currently is edefined below:
****************************************************************************/
#define NDR_CHAR_REP_MASK (unsigned long)0X0000000FL
#define NDR_INT_REP_MASK (unsigned long)0X000000F0L
#define NDR_FLOAT_REP_MASK (unsigned long)0X0000FF00L
#define NDR_LITTLE_ENDIAN (unsigned long)0X00000010L
#define NDR_BIG_ENDIAN (unsigned long)0X00000000L
#define NDR_IEEE_FLOAT (unsigned long)0X00000000L
#define NDR_VAX_FLOAT (unsigned long)0X00000100L
#define NDR_IBM_FLOAT (unsigned long)0X00000300L
#define NDR_ASCII_CHAR (unsigned long)0X00000000L
#define NDR_EBCDIC_CHAR (unsigned long)0X00000001L
#if defined(__RPC_MAC__)
#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000000L
#define NDR_LOCAL_ENDIAN NDR_BIG_ENDIAN
#else
#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000010L
#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
#endif
/****************************************************************************
* Macros for targeted platforms
****************************************************************************/
#if (0x501 <= _WIN32_WINNT)
#define TARGET_IS_NT51_OR_LATER 1
#else
#define TARGET_IS_NT51_OR_LATER 0
#endif
#if (0x500 <= _WIN32_WINNT)
#define TARGET_IS_NT50_OR_LATER 1
#else
#define TARGET_IS_NT50_OR_LATER 0
#endif
#if (defined(_WIN32_DCOM) || 0x400 <= _WIN32_WINNT)
#define TARGET_IS_NT40_OR_LATER 1
#else
#define TARGET_IS_NT40_OR_LATER 0
#endif
#if (0x400 <= WINVER)
#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
#else
#define TARGET_IS_NT351_OR_WIN95_OR_LATER 0
#endif
/****************************************************************************
* Other MIDL base types / predefined types:
****************************************************************************/
#define small char
typedef unsigned char byte;
typedef byte cs_byte;
typedef unsigned char boolean;
#ifndef _HYPER_DEFINED
#define _HYPER_DEFINED
#if (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
#define hyper __int64
#define MIDL_uhyper unsigned __int64
#else
typedef double hyper;
typedef double MIDL_uhyper;
#endif
#endif // _HYPER_DEFINED
#ifndef _WCHAR_T_DEFINED
typedef unsigned short wchar_t;
#define _WCHAR_T_DEFINED
#endif
#ifndef _SIZE_T_DEFINED
#ifdef __RPC_WIN64__
typedef unsigned __int64 size_t;
#else
typedef unsigned int size_t;
#endif
#define _SIZE_T_DEFINED
#endif
#ifdef __RPC_WIN32__
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#define __RPC_CALLEE __stdcall
#else
#define __RPC_CALLEE
#endif
#endif
#ifndef __MIDL_USER_DEFINED
#define midl_user_allocate MIDL_user_allocate
#define midl_user_free MIDL_user_free
#define __MIDL_USER_DEFINED
#endif
void * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void * );
#define RPC_VAR_ENTRY __cdecl
/* winnt only */
#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_IA64)
#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
#else
#define __MIDL_DECLSPEC_DLLIMPORT
#define __MIDL_DECLSPEC_DLLEXPORT
#endif
/****************************************************************************
* Context handle management related definitions:
*
* Client and Server Contexts.
*
****************************************************************************/
typedef void * NDR_CCONTEXT;
typedef struct
{
void * pad[2];
void * userContext;
} * NDR_SCONTEXT;
#define NDRSContextValue(hContext) (&(hContext)->userContext)
#define cbNDRContext 20 /* size of context on WIRE */
typedef void (__RPC_USER * NDR_RUNDOWN)(void * context);
typedef void (__RPC_USER * NDR_NOTIFY_ROUTINE)(void);
typedef void (__RPC_USER * NDR_NOTIFY2_ROUTINE)(boolean flag);
typedef struct _SCONTEXT_QUEUE {
unsigned long NumberOfObjects;
NDR_SCONTEXT * ArrayOfObjects;
} SCONTEXT_QUEUE, * PSCONTEXT_QUEUE;
RPCRTAPI
RPC_BINDING_HANDLE
RPC_ENTRY
NDRCContextBinding (
IN NDR_CCONTEXT CContext
);
RPCRTAPI
void
RPC_ENTRY
NDRCContextMarshall (
IN NDR_CCONTEXT CContext,
OUT void *pBuff
);
RPCRTAPI
void
RPC_ENTRY
NDRCContextUnmarshall (
OUT NDR_CCONTEXT * pCContext,
IN RPC_BINDING_HANDLE hBinding,
IN void * pBuff,
IN unsigned long DataRepresentation
);
RPCRTAPI
void
RPC_ENTRY
NDRSContextMarshall (
IN NDR_SCONTEXT CContext,
OUT void * pBuff,
IN NDR_RUNDOWN userRunDownIn
);
RPCRTAPI
NDR_SCONTEXT
RPC_ENTRY
NDRSContextUnmarshall (
IN void * pBuff,
IN unsigned long DataRepresentation
);
RPCRTAPI
void
RPC_ENTRY
NDRSContextMarshallEx (
IN RPC_BINDING_HANDLE BindingHandle,
IN NDR_SCONTEXT CContext,
OUT void * pBuff,
IN NDR_RUNDOWN userRunDownIn
);
RPCRTAPI
void
RPC_ENTRY
NDRSContextMarshall2 (
IN RPC_BINDING_HANDLE BindingHandle,
IN NDR_SCONTEXT CContext,
OUT void * pBuff,
IN NDR_RUNDOWN userRunDownIn,
IN void * CtxGuard,
IN unsigned long Flags
);
RPCRTAPI
NDR_SCONTEXT
RPC_ENTRY
NDRSContextUnmarshallEx (
IN RPC_BINDING_HANDLE BindingHandle,
IN void * pBuff,
IN unsigned long DataRepresentation
);
RPCRTAPI
NDR_SCONTEXT
RPC_ENTRY
NDRSContextUnmarshall2(
IN RPC_BINDING_HANDLE BindingHandle,
IN void * pBuff,
IN unsigned long DataRepresentation,
IN void * CtxGuard,
IN unsigned long Flags
);
RPCRTAPI
void
RPC_ENTRY
RpcSsDestroyClientContext (
IN void * * ContextHandle
);
/****************************************************************************
NDR conversion related definitions.
****************************************************************************/
#define byte_from_ndr(source, target) \
{ \
*(target) = *(*(char * *)&(source)->Buffer)++; \
}
#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
{ \
NDRcopy ( \
(((char *)(Target))+(LowerIndex)), \
(Source)->Buffer, \
(unsigned int)((UpperIndex)-(LowerIndex))); \
*(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
}
#define boolean_from_ndr(source, target) \
{ \
*(target) = *(*(char * *)&(source)->Buffer)++; \
}
#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
{ \
NDRcopy ( \
(((char *)(Target))+(LowerIndex)), \
(Source)->Buffer, \
(unsigned int)((UpperIndex)-(LowerIndex))); \
*(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
}
#define small_from_ndr(source, target) \
{ \
*(target) = *(*(char * *)&(source)->Buffer)++; \
}
#define small_from_ndr_temp(source, target, format) \
{ \
*(target) = *(*(char * *)(source))++; \
}
#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
{ \
NDRcopy ( \
(((char *)(Target))+(LowerIndex)), \
(Source)->Buffer, \
(unsigned int)((UpperIndex)-(LowerIndex))); \
*(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
}
/****************************************************************************
Platform specific mapping of c-runtime functions.
****************************************************************************/
#if defined(__RPC_WIN32__) || defined(__RPC_WIN64__)
#define MIDL_ascii_strlen(string) \
strlen(string)
#define MIDL_ascii_strcpy(target,source) \
strcpy(target,source)
#define MIDL_memset(s,c,n) \
memset(s,c,n)
#endif
/****************************************************************************
MIDL 2.0 ndr definitions.
****************************************************************************/
typedef unsigned long error_status_t;
#define _midl_ma1( p, cast ) *(*( cast **)&p)++
#define _midl_ma2( p, cast ) *(*( cast **)&p)++
#define _midl_ma4( p, cast ) *(*( cast **)&p)++
#define _midl_ma8( p, cast ) *(*( cast **)&p)++
#define _midl_unma1( p, cast ) *(( cast *)p)++
#define _midl_unma2( p, cast ) *(( cast *)p)++
#define _midl_unma3( p, cast ) *(( cast *)p)++
#define _midl_unma4( p, cast ) *(( cast *)p)++
// Some alignment specific macros.
// RKK64
// these appear to be used in fossils inside MIDL
#define _midl_fa2( p ) (p = (RPC_BUFPTR )((ULONG_PTR)(p+1) & ~0x1))
#define _midl_fa4( p ) (p = (RPC_BUFPTR )((ULONG_PTR)(p+3) & ~0x3))
#define _midl_fa8( p ) (p = (RPC_BUFPTR )((ULONG_PTR)(p+7) & ~0x7))
#define _midl_addp( p, n ) (p += n)
// Marshalling macros
#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
////////////////////////////////////////////////////////////////////////////
// Ndr macros.
////////////////////////////////////////////////////////////////////////////
// RKK64
// these appear to be used in fossils inside MIDL
#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, \
_midl_ma4( p, unsigned long) = 0, \
_midl_ma4( p, unsigned long) = l)
#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long),\
(_midl_addp(p,4)), \
(l=_midl_unma4(p,unsigned long))
#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
#define NdrUnMarshCCtxtHdl(pc,p,h,drep) \
(NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
// end of unused
#define NdrFieldOffset(s,f) (LONG_PTR)(& (((s *)0)->f))
#define NdrFieldPad(s,f,p,t) ((unsigned long)(NdrFieldOffset(s,f) - NdrFieldOffset(s,p)) - sizeof(t))
#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
(unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
//
// On the server side, the following exceptions are mapped to
// the bad stub data exception if -error stub_data is used.
//
#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER \
( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
(RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
(RpcExceptionCode() == RPC_X_BAD_STUB_DATA) || \
(RpcExceptionCode() == RPC_S_INVALID_BOUND) )
/////////////////////////////////////////////////////////////////////////////
// Some stub helper functions.
/////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
// Stub helper structures.
////////////////////////////////////////////////////////////////////////////
struct _MIDL_STUB_MESSAGE;
struct _MIDL_STUB_DESC;
struct _FULL_PTR_XLAT_TABLES;
typedef unsigned char * RPC_BUFPTR;
typedef unsigned long RPC_LENGTH;
// Expression evaluation callback routine prototype.
typedef void (__RPC_USER * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE * );
typedef const unsigned char * PFORMAT_STRING;
/*
* Multidimensional conformant/varying array struct.
*/
typedef struct
{
long Dimension;
/* These fields MUST be (unsigned long *) */
unsigned long * BufferConformanceMark;
unsigned long * BufferVarianceMark;
/* Count arrays, used for top level arrays in -Os stubs */
unsigned long * MaxCountArray;
unsigned long * OffsetArray;
unsigned long * ActualCountArray;
} ARRAY_INFO, *PARRAY_INFO;
typedef struct _NDR_ASYNC_MESSAGE * PNDR_ASYNC_MESSAGE;
typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO;
/*
* cs_char info in the stub message
*/
typedef struct
{
unsigned long WireCodeset;
unsigned long DesiredReceivingCodeset;
void *CSArrayInfo;
} CS_STUB_INFO;
/*
* MIDL Stub Message
*/
typedef const unsigned char * PFORMAT_STRING;
typedef struct _MIDL_SYNTAX_INFO MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
struct NDR_ALLOC_ALL_NODES_CONTEXT;
struct NDR_POINTER_QUEUE_STATE;
struct _NDR_PROC_CONTEXT;
typedef struct _MIDL_STUB_MESSAGE
{
/* RPC message structure. */
PRPC_MESSAGE RpcMsg;
/* Pointer into RPC message buffer. */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?