Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
1.5 KiB

/*++
Copyright (c) 1991-92 Microsoft Corporation
Module Name:
ReqSize.c
Abstract:
This contains RxpComputeRequestBufferSize. This returns the size (in
bytes) necessary to hold the request buffer.
Author:
John Rogers (JohnRo) 20-Aug-1991
Revision History:
11-May-1991 JohnRo
Created.
20-Aug-1991 JohnRo
Changed to move toward UNICODE possibility. Added this header.
31-Mar-1992 JohnRo
Prevent too large size requests.
--*/
// These must be included first:
#include <windef.h> // DWORD, IN, OPTIONAL, WORD, etc.
#include <lmcons.h> // NET_API_STATUS
// These may be included in any order:
#include <netdebug.h> // NetpAssert().
#include <rap.h> // DESC_CHAR, LPDESC, etc.
#include <rxp.h> // My prototype, MAX_TRANSACT_ equates.
DWORD
RxpComputeRequestBufferSize(
IN LPDESC ParmDesc,
IN LPDESC DataDescSmb OPTIONAL,
IN DWORD DataSize
)
{
DWORD BytesNeeded;
NetpAssert( ParmDesc != NULL );
NetpAssert( RapIsValidDescriptorSmb( ParmDesc ) );
if (DataDescSmb != NULL) {
NetpAssert( RapIsValidDescriptorSmb( DataDescSmb ) );
}
BytesNeeded = sizeof(WORD) // api number
+ DESCLEN( ParmDesc ) + 1;
if (DataDescSmb != NULL) {
BytesNeeded += DESCLEN( DataDescSmb ) + 1;
} else {
BytesNeeded += 1; // just null char
}
BytesNeeded += DataSize;
NetpAssert( BytesNeeded <= MAX_TRANSACT_SEND_PARM_SIZE );
return (BytesNeeded);
}