Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

164 lines
4.3 KiB

/*****************************************************************/
/** Microsoft Windows for Workgroups **/
/** Copyright (C) Microsoft Corp., 1991-1992 **/
/*****************************************************************/
/* NPCOMMON.H -- Internal standard header for network provider common library.
*
* ATTENTION: This file is used by 16bit components and should be
* maintained as such.
*
* History:
* 03/22/93 gregj Created
* 04/02/93 lens Added _INC_NPDEFS define and _INC_WINDOWS test.
*
*/
#ifndef _INC_NPDEFS
#define _INC_NPDEFS
#ifndef RC_INVOKED
#pragma warning(disable:4147) // warning about ignoring __loadds on function
// ptr decls, of which there are 5 in windows.h
#pragma warning(disable:4118) // warning about not accepting the intrinsic function pragma
// during a fast compile
// Macro to quiet compiler for an unused formal parameter.
#define UNUSED(x) ((void)(x))
#endif
#ifndef _INC_WINDOWS
#include <windows.h>
#endif
#ifdef IS_32
#ifndef _INC_NETSPI
#include <netspi.h>
#endif
#ifndef _STRING_HXX_
#include <npstring.h>
#endif
#endif /* IS_32 */
// Fixup for when RESOURCETYPE_ANY was not compatible with NT.
// Codework: remove from system.
#define RESOURCETYPE_ANY1 RESOURCETYPE_RESERVED
#define CHAR char
#define INT int
typedef unsigned short WCHAR;
typedef unsigned short USHORT;
typedef WORD HANDLE16;
#ifndef APIENTRY
#define APIENTRY FAR PASCAL
#endif
#define FAR_NETLIB /* our netlib is in netapi.dll, and always far */
#ifndef IS_32
#ifndef LOADDS
#define LOADDS __loadds
#endif
#else
#define LOADDS
#endif
#ifndef HNRES
typedef HANDLE HNRES;
#endif
// That is common return type used in both common and mnr projects
#ifndef MNRSTATUS
#ifdef IS_32
#define MNRSTATUS UINT
#else
#define MNRSTATUS WORD
#endif
#endif
#define MNRENTRY DWORD APIENTRY
// Find size of structure upto and including a field that may be the last field in the structure.
#define SIZE_TO_FIELD(s,f) (sizeof(((s *)NULL)->f) + (LPBYTE)&(((s *)NULL)->f) - (LPBYTE)NULL)
// Null strings are quite often taken to be either a NULL pointer or a zero
#define IS_EMPTY_STRING(pch) ( !pch || !*(pch) )
/*******************************************************************
Macro Description:
This macro is used to test that a LoadLibrary call succeeded.
Arguments:
hModule - the handle returned from the LoadLibrary call.
Notes:
Win31 documentation says that errors are less than HINSTANCE_ERROR
and that success is greater than 32. Since HINSTANCE_ERROR is 32,
this leaves the value of 32 as being undefined!
*******************************************************************/
#ifdef IS_32
#define MNRVALIDDLLHANDLE(hdll) (hdll != NULL)
#else
#define MNRVALIDDLLHANDLE(hdll) (hdll > HINSTANCE_ERROR)
#endif
/*******************************************************************
Macro Description:
This macro is used to determine if a buffer passed in has valid
addresses and writeable memory.
Arguments:
lpBuffer - the address of the buffer.
lpcbBuffer - the address of a DWORD containing the size of the
buffer that is filled in on return with the
required size of the buffer if the buffer
is not large enough.
Evalutes to:
An expression that returns TRUE or FALSE.
Notes:
Only valid for Win32 applications to call.
The macro does weak validation as it is used generically in many APIs.
In particular, this means that the macro succeeds a NULL lpcbBuffer,
and zero *lpcbBuffer. In neither of these cases does it validate
that lpBuffer is a valid address (and relies upon the behavior of
IsBadWritePtr when *lpcbBuffer is zero).
*******************************************************************/
#define IS_BAD_WRITE_BUFFER(lpBuffer,lpcbBuffer) \
((lpcbBuffer != NULL) && \
(IsBadWritePtr(lpcbBuffer, sizeof(DWORD)) || \
IsBadWritePtr(lpBuffer, *lpcbBuffer)))
#ifdef IS_32
extern "C" { /* Know we're using C++ internally */
NLS_STR FAR * NPSERVICE NPSGetStatusText(DWORD dwError,
LPBOOL pbStatic);
DWORD NPSERVICE NPSCopyNLS(NLS_STR FAR *pnlsSourceString,
LPVOID lpDestBuffer,
LPDWORD lpBufferSize);
}
#endif /* IS_32 */
#endif /* !_INC_NPDEFS */