windows-nt/Source/XPSP1/NT/ds/netapi/rap/totalsiz.c
2020-09-26 16:20:57 +08:00

111 lines
2.8 KiB
C

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
TotalSiz.c
Abstract:
This module contains RapTotalSize.
Author:
John Rogers (JohnRo) 05-Jun-1991
Environment:
Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
Requires ANSI C extensions: slash-slash comments, long external names.
Revision History:
05-Jun-1991 JohnRo
Created RapTotalSize().
--*/
// These must be included first:
#include <windef.h> // IN, LPDWORD, NULL, OPTIONAL, DWORD, etc.
#include <lmcons.h> // NET_API_STATUS
// These may be included in any order:
#include <lmerr.h>
#include <netdebug.h> // NetpKdPrint(()), FORMAT_ equates.
#include <rap.h> // My prototype, RapConvertSingleEntry(), etc.
#include <rapdebug.h> // IF_DEBUG().
DWORD
RapTotalSize (
IN LPBYTE InStructure,
IN LPDESC InStructureDesc,
IN LPDESC OutStructureDesc,
IN BOOL MeaninglessInputPointers,
IN RAP_TRANSMISSION_MODE TransmissionMode,
IN RAP_CONVERSION_MODE ConversionMode
)
/*++
Routine Description:
This routine computes the total size (fixed and string) of a given
structure.
Arguments:
InStructure - a pointer to the input structure.
InStructureDesc - the descriptor string for the input structure.
OutStructureDesc - the descriptor string for the output structure.
(May be the same as input, in many cases.)
MeaninglessInputPointers - if TRUE, then all pointers in the input
structure are meaningless. This routine should assume that
the first variable data immediately follows the input structure,
and the rest of the variable data follows in order.
Transmission Mode - Indicates whether this structure is part of a response,
a request, or both.
Conversion Mode - Indicates whether this is a RAP-to-native, native-to-RAP,
or native-to-native conversion.
Return Value:
DWORD - number of bytes required for the structure
--*/
{
NET_API_STATUS status;
DWORD BytesRequired = 0;
status = RapConvertSingleEntry (
InStructure,
InStructureDesc,
MeaninglessInputPointers,
NULL, // no output buffer start
NULL, // no output buffer
OutStructureDesc, // out desc (may be same as input)
FALSE, // don't want offsets (doesn't matter)
NULL, // no string location
& BytesRequired, // size needed (updated)
TransmissionMode,
ConversionMode);
NetpAssert( status == NERR_Success );
IF_DEBUG(TOTALSIZ) {
NetpKdPrint(("RapTotalSize: size is " FORMAT_DWORD ".\n",
BytesRequired));
}
return (BytesRequired);
}