windows-nt/Source/XPSP1/NT/public/internal/net/inc/rpcutil.h

150 lines
3.4 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
rpcutil.h
Abstract:
This file contains prototypes for the bind and unbind functions that
all net api stub functions will call. It also includes the allocate
and free routines used by the MIDL generated RPC stubs.
Other function prototypes defined here are RPC helper routines to
start and stop the RPC server, and the RPC status to Net API status
mapping function.
Author:
Dan Lafferty danl 06-Feb-1991
Environment:
User Mode - Win32
Revision History:
06-Feb-1991 danl
Created
26-Apr-1991 JohnRo
Added IN and OUT keywords to MIDL functions. Commented-out
(nonstandard) identifier on endif. Deleted tabs.
23-Oct-1991 Danl
Added NetpInitRpcServer().
03-Dec-1991 JohnRo
Added MIDL_user_reallocate and MIDL_user_size APIs. (These are so we
create the NetApiBufferAllocate, NetApiBufferReallocate, and
NetApiBufferSize APIs.)
20-Jul-1992 JohnRo
RAID 2252: repl should prevent export on Windows/NT.
Reordered this change history.
01-Dec-1992 JohnRo
Fix MIDL_user_ func signatures.
--*/
#ifndef _RPCUTIL_
#define _RPCUTIL_
#include <lmcons.h>
#ifndef RPC_NO_WINDOWS_H // Don't let rpc.h include windows.h
#define RPC_NO_WINDOWS_H
#endif // RPC_NO_WINDOWS_H
#include <rpc.h> // __RPC_FAR, etc.
//
// DEFINES
//
//
// The following typedefs are created for use in the net api Enum entry point
// routines. These structures are meant to mirror the level specific
// info containers that are specified in the .idl file for the Enum API
// function. Using these structures to set up for the API call allows
// the entry point routine to avoid using any bulky level-specific logic
// to set-up or return from the RPC stub call.
//
typedef struct _GENERIC_INFO_CONTAINER {
DWORD EntriesRead;
LPBYTE Buffer;
} GENERIC_INFO_CONTAINER, *PGENERIC_INFO_CONTAINER, *LPGENERIC_INFO_CONTAINER ;
typedef struct _GENERIC_ENUM_STRUCT {
DWORD Level;
PGENERIC_INFO_CONTAINER Container;
} GENERIC_ENUM_STRUCT, *PGENERIC_ENUM_STRUCT, *LPGENERIC_ENUM_STRUCT ;
#define NT_PIPE_PREFIX TEXT("\\PIPE\\")
//
// Function Prototypes - routines called by MIDL-generated code:
//
void __RPC_FAR * __RPC_API
MIDL_user_allocate(
IN size_t NumBytes
);
void __RPC_API
MIDL_user_free(
IN void __RPC_FAR *MemPointer
);
//
// Function Prototypes - routines to go along with the above, but aren't
// needed by MIDL or any other non-network software.
//
void *
MIDL_user_reallocate(
IN void * OldPointer OPTIONAL,
IN size_t NewByteCount
);
unsigned long
MIDL_user_size(
IN void * Pointer
);
//
// Function Prototypes - private network routines.
//
RPC_STATUS
NetpBindRpc(
IN LPTSTR servername,
IN LPTSTR servicename,
IN LPTSTR networkoptions,
OUT RPC_BINDING_HANDLE * pBindingHandle
);
// We do not need any longer NetpRpcStatusToApiStatus() mapping
// But for now, rather than eliminating a few references to it in
// the net tree, we just stub it out.
// NET_API_STATUS
// NetpRpcStatusToApiStatus(
// IN RPC_STATUS RpcStatus
// );
#define NetpRpcStatusToApiStatus(RpcStatus) ((NET_API_STATUS)(RpcStatus))
RPC_STATUS
NetpUnbindRpc(
IN RPC_BINDING_HANDLE BindingHandle
);
#endif // _RPCUTIL_