summaryrefslogtreecommitdiffstats
path: root/private/nw/svcdlls/nwwks/inc
diff options
context:
space:
mode:
Diffstat (limited to 'private/nw/svcdlls/nwwks/inc')
-rw-r--r--private/nw/svcdlls/nwwks/inc/imports.h15
-rw-r--r--private/nw/svcdlls/nwwks/inc/nwauth.h70
-rw-r--r--private/nw/svcdlls/nwwks/inc/nwlsa.h69
-rw-r--r--private/nw/svcdlls/nwwks/inc/nwmisc.h160
-rw-r--r--private/nw/svcdlls/nwwks/inc/nwreg.h85
-rw-r--r--private/nw/svcdlls/nwwks/inc/rnrdefs.h226
-rw-r--r--private/nw/svcdlls/nwwks/inc/sapcmn.h66
-rw-r--r--private/nw/svcdlls/nwwks/inc/splutil.h81
8 files changed, 772 insertions, 0 deletions
diff --git a/private/nw/svcdlls/nwwks/inc/imports.h b/private/nw/svcdlls/nwwks/inc/imports.h
new file mode 100644
index 000000000..93176c732
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/inc/imports.h
@@ -0,0 +1,15 @@
+#include <windef.h>
+
+#ifdef MIDL_PASS
+#define LPWSTR [string] wchar_t*
+#define PSECURITY_DESCRIPTOR DWORD
+#endif
+
+#include <stdarg.h>
+#include <winbase.h>
+#include <wingdi.h>
+#include <winspool.h>
+#define _INC_WINDOWS
+#include <winsock2.h>
+#include <wsipx.h>
+#include <nspapi.h>
diff --git a/private/nw/svcdlls/nwwks/inc/nwauth.h b/private/nw/svcdlls/nwwks/inc/nwauth.h
new file mode 100644
index 000000000..72f78e3a8
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/inc/nwauth.h
@@ -0,0 +1,70 @@
+/*++
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ nwauth.h
+
+Abstract:
+
+ Header for data structures provided by the NetWare
+ authentication package.
+
+Author:
+
+ Rita Wong (ritaw) 4-Feb-1994
+
+Revision History:
+
+--*/
+
+#ifndef _NWAUTH_INCLUDED_
+#define _NWAUTH_INCLUDED_
+
+#include <nwcons.h>
+
+//
+// Name of the authentication package.
+//
+#define NW_AUTH_PACKAGE_NAME "NETWARE_AUTHENTICATION_PACKAGE_V1_0"
+
+//
+// LsaCallAuthenticationPackage() submission and response
+// message types.
+//
+
+typedef enum _NWAUTH_MESSAGE_TYPE {
+ NwAuth_GetCredential = 0,
+ NwAuth_SetCredential
+} NWAUTH_MESSAGE_TYPE, *PNWAUTH_MESSAGE_TYPE;
+
+//
+// NwAuth_GetCredential submit buffer and response
+//
+typedef struct _NWAUTH_GET_CREDENTIAL_REQUEST {
+ NWAUTH_MESSAGE_TYPE MessageType;
+ LUID LogonId;
+} NWAUTH_GET_CREDENTIAL_REQUEST, *PNWAUTH_GET_CREDENTIAL_REQUEST;
+
+typedef struct _NWAUTH_GET_CREDENTIAL_RESPONSE {
+ WCHAR UserName[NW_MAX_USERNAME_LEN + 1];
+ WCHAR Password[NW_MAX_PASSWORD_LEN + 1];
+} NWAUTH_GET_CREDENTIAL_RESPONSE, *PNWAUTH_GET_CREDENTIAL_RESPONSE;
+
+
+//
+// NwAuth_SetCredential submit buffer
+//
+typedef struct _NWAUTH_SET_CREDENTIAL_REQUEST {
+ NWAUTH_MESSAGE_TYPE MessageType;
+ LUID LogonId;
+ WCHAR UserName[NW_MAX_USERNAME_LEN + 1];
+ WCHAR Password[NW_MAX_PASSWORD_LEN + 1];
+} NWAUTH_SET_CREDENTIAL_REQUEST, *PNWAUTH_SET_CREDENTIAL_REQUEST;
+
+#define NW_ENCODE_SEED 0x5C
+#define NW_ENCODE_SEED2 0xA9
+#define NW_ENCODE_SEED3 0x83
+
+#endif // _NWAUTH_INCLUDED_
diff --git a/private/nw/svcdlls/nwwks/inc/nwlsa.h b/private/nw/svcdlls/nwwks/inc/nwlsa.h
new file mode 100644
index 000000000..cb2245c5d
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/inc/nwlsa.h
@@ -0,0 +1,69 @@
+/*++
+
+Copyright (c) 1993 Microsoft Corporation
+
+Module Name:
+
+ nwlsa.h
+
+Abstract:
+
+ Header for LSA helper routines used by both the client and
+ server sides of the workstation service.
+
+Author:
+
+ Rita Wong (ritaw) 22-Mar-1993
+
+Revision History:
+
+--*/
+
+#ifndef _NWLSA_INCLUDED_
+#define _NWLSA_INCLUDED_
+
+#include <ntlsa.h>
+
+
+DWORD
+NwOpenPolicy(
+ IN ACCESS_MASK DesiredAccess,
+ OUT LSA_HANDLE *PolicyHandle
+ );
+
+DWORD
+NwOpenSecret(
+ IN ACCESS_MASK DesiredAccess,
+ IN LSA_HANDLE PolicyHandle,
+ IN LPWSTR LsaSecretName,
+ OUT PLSA_HANDLE SecretHandle
+ );
+
+DWORD
+NwFormSecretName(
+ IN LPWSTR UserName,
+ OUT LPWSTR *LsaSecretName
+ );
+
+DWORD
+NwSetPassword(
+ IN LPWSTR UserName,
+ IN LPWSTR Password
+ );
+
+DWORD
+NwDeletePassword(
+ IN LPWSTR UserName
+ );
+
+DWORD
+NwGetPassword(
+ IN LPWSTR UserName,
+ OUT PUNICODE_STRING *Password,
+ OUT PUNICODE_STRING *OldPassword
+ );
+
+#define LAST_USER L"LastUser"
+#define GATEWAY_USER L"GatewayUser"
+
+#endif // _NWLSA_INCLUDED_
diff --git a/private/nw/svcdlls/nwwks/inc/nwmisc.h b/private/nw/svcdlls/nwwks/inc/nwmisc.h
new file mode 100644
index 000000000..8b58de22d
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/inc/nwmisc.h
@@ -0,0 +1,160 @@
+/*++
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ nwmisc.h
+
+Abstract:
+
+ Header which specifies the misc routines used by the workstation service.
+
+Author:
+
+ Chuck Y Chan (chuckc) 2-Mar-1994
+
+Revision History:
+
+ Glenn A Curtis (glennc) 18-Jul-1995
+
+--*/
+
+#ifndef _NWMISC_INCLUDED_
+#define _NWMISC_INCLUDED_
+
+#include <winsock2.h>
+#include <basetyps.h>
+#include <nspapi.h>
+#include "sapcmn.h"
+
+DWORD
+NwGetGraceLoginCount(
+ LPWSTR Server,
+ LPWSTR UserName,
+ LPDWORD lpResult
+ );
+
+//
+// Commonly reference value for NCP Server name length
+//
+#define NW_MAX_SERVER_LEN 48
+
+
+//
+// Flags used for the function NwParseNdsUncPath()
+//
+#define PARSE_NDS_GET_TREE_NAME 0
+#define PARSE_NDS_GET_PATH_NAME 1
+#define PARSE_NDS_GET_OBJECT_NAME 2
+
+
+WORD
+NwParseNdsUncPath(
+ IN OUT LPWSTR * Result,
+ IN LPWSTR ContainerName,
+ IN ULONG flag
+ );
+
+//
+// NDS Object class type identifiers
+//
+#define CLASS_TYPE_ALIAS 1
+#define CLASS_TYPE_AFP_SERVER 2
+#define CLASS_TYPE_BINDERY_OBJECT 3
+#define CLASS_TYPE_BINDERY_QUEUE 4
+#define CLASS_TYPE_COMPUTER 5
+#define CLASS_TYPE_COUNTRY 6
+#define CLASS_TYPE_DIRECTORY_MAP 7
+#define CLASS_TYPE_GROUP 8
+#define CLASS_TYPE_LOCALITY 9
+#define CLASS_TYPE_NCP_SERVER 10
+#define CLASS_TYPE_ORGANIZATION 11
+#define CLASS_TYPE_ORGANIZATIONAL_ROLE 12
+#define CLASS_TYPE_ORGANIZATIONAL_UNIT 13
+#define CLASS_TYPE_PRINTER 14
+#define CLASS_TYPE_PRINT_SERVER 15
+#define CLASS_TYPE_PROFILE 16
+#define CLASS_TYPE_QUEUE 17
+#define CLASS_TYPE_TOP 18
+#define CLASS_TYPE_UNKNOWN 19
+#define CLASS_TYPE_USER 20
+#define CLASS_TYPE_VOLUME 21
+
+#define CLASS_NAME_ALIAS L"Alias"
+#define CLASS_NAME_AFP_SERVER L"AFP Server"
+#define CLASS_NAME_BINDERY_OBJECT L"Bindery Object"
+#define CLASS_NAME_BINDERY_QUEUE L"Bindery Queue"
+#define CLASS_NAME_COMPUTER L"Computer"
+#define CLASS_NAME_COUNTRY L"Country"
+#define CLASS_NAME_DIRECTORY_MAP L"Directory Map"
+#define CLASS_NAME_GROUP L"Group"
+#define CLASS_NAME_LOCALITY L"Locality"
+#define CLASS_NAME_NCP_SERVER L"NCP Server"
+#define CLASS_NAME_ORGANIZATION L"Organization"
+#define CLASS_NAME_ORGANIZATIONAL_ROLE L"Organizational Role"
+#define CLASS_NAME_ORGANIZATIONAL_UNIT L"Organizational Unit"
+#define CLASS_NAME_PRINTER L"Printer"
+#define CLASS_NAME_PRINT_SERVER L"Print Server"
+#define CLASS_NAME_PROFILE L"Profile"
+#define CLASS_NAME_QUEUE L"Queue"
+#define CLASS_NAME_TOP L"Top"
+#define CLASS_NAME_UNKNOWN L"Unknown"
+#define CLASS_NAME_USER L"User"
+#define CLASS_NAME_VOLUME L"Volume"
+
+
+//
+// Node structure in the registered service link list and
+// functions to add/remove items from the link list
+//
+
+typedef struct _REGISTERED_SERVICE {
+ WORD nSapType; // SAP Type
+ BOOL fAdvertiseBySap; // TRUE if advertise by SAP agent
+ LPSERVICE_INFO pServiceInfo; // Info about this service
+ struct _REGISTERED_SERVICE *Next; // Points to the next service node
+} REGISTERED_SERVICE, *PREGISTERED_SERVICE;
+
+
+PREGISTERED_SERVICE
+GetServiceItemFromList(
+ IN WORD nSapType,
+ IN LPWSTR pServiceName
+);
+
+DWORD
+NwRegisterService(
+ IN LPSERVICE_INFO lpServiceInfo,
+ IN WORD nSapType,
+ IN HANDLE hEventHandle
+);
+
+DWORD
+NwDeregisterService(
+ IN LPSERVICE_INFO lpServiceInfo,
+ IN WORD nSapType
+);
+
+DWORD
+NwGetService(
+ IN LPWSTR Reserved,
+ IN WORD nSapType,
+ IN LPWSTR lpServiceName,
+ IN DWORD dwProperties,
+ OUT LPBYTE lpServiceInfo,
+ IN DWORD dwBufferLength,
+ OUT LPDWORD lpdwBytesNeeded
+);
+
+VOID
+NwInitializeServiceProvider(
+ VOID
+ );
+
+VOID
+NwTerminateServiceProvider(
+ VOID
+ );
+
+#endif // _NWMISC_INCLUDED_
diff --git a/private/nw/svcdlls/nwwks/inc/nwreg.h b/private/nw/svcdlls/nwwks/inc/nwreg.h
new file mode 100644
index 000000000..c7b4a162c
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/inc/nwreg.h
@@ -0,0 +1,85 @@
+/*++
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ nwreg.h
+
+Abstract:
+
+ Header which specifies the misc registry parameters and helper
+ routines used by the workstation service.
+
+Author:
+
+ Rita Wong (ritaw) 22-Mar-1993
+
+Revision History:
+
+ ChuckC 11-Dec-93 Split off the registry names to nwrnames.h
+
+--*/
+
+#ifndef _NWREG_INCLUDED_
+#define _NWREG_INCLUDED_
+
+#include <nwrnames.h>
+
+//
+// Default print option
+//
+#define NW_PRINT_OPTION_DEFAULT 0x98
+#define NW_GATEWAY_PRINT_OPTION_DEFAULT 0x88
+
+#define NW_DOMAIN_USER_SEPARATOR L'*'
+#define NW_DOMAIN_USER_SEPARATOR_STR L"*"
+
+#define NW_MAX_LOGON_ID_LEN 17
+
+DWORD
+NwReadRegValue(
+ IN HKEY Key,
+ IN LPWSTR ValueName,
+ OUT LPWSTR *Value
+ );
+
+VOID
+NwLuidToWStr(
+ IN PLUID LogonId,
+ OUT LPWSTR LogonIdStr
+ );
+
+VOID
+NwWStrToLuid(
+ IN LPWSTR LogonIdStr,
+ OUT PLUID LogonId
+ );
+
+VOID
+NwDeleteCurrentUser(
+ VOID
+ );
+
+DWORD
+NwDeleteServiceLogon(
+ IN PLUID Id OPTIONAL
+ );
+
+DWORD
+NwpRegisterGatewayShare(
+ IN LPWSTR ShareName,
+ IN LPWSTR DriveName
+ );
+
+DWORD
+NwpClearGatewayShare(
+ IN LPWSTR ShareName
+ );
+
+DWORD
+NwpCleanupGatewayShares(
+ VOID
+ );
+
+#endif // _NWREG_INCLUDED_
diff --git a/private/nw/svcdlls/nwwks/inc/rnrdefs.h b/private/nw/svcdlls/nwwks/inc/rnrdefs.h
new file mode 100644
index 000000000..72c405180
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/inc/rnrdefs.h
@@ -0,0 +1,226 @@
+/*++
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ nwmisc.h
+
+Abstract:
+
+ Header which specifies the misc routines used by the workstation service.
+
+Author:
+
+ Arnold Miller (arnoldm) 15-Feb-1996
+
+Revision History:
+
+
+--*/
+#ifndef __RNRDEFS_H__
+#define __RNRDEFS_H__
+
+#include "sapcmn.h"
+
+//
+// Bit defs for the protocols
+//
+
+#define IPX_BIT 1
+#define SPX_BIT 2
+#define SPXII_BIT 4
+
+//
+// forwards\
+//
+
+struct _SAP_RNR_CONTEXT;
+//
+// Bindery control
+//
+
+typedef struct _BinderyControl
+{
+ LONG lIndex;
+} BINDERYCONTROL, *PBINDERYCONTROL;
+
+//
+// SAP RnR context information. This is linked off of the
+// SAP_BCAST_CONTROL defined ahead
+//
+
+typedef struct _SAP_DATA
+{
+ struct _SAP_DATA * sapNext;
+ // save everything except hop count
+ WORD sapid; // for a sanity check
+ CHAR sapname[48]; // what we don't know
+ BYTE socketAddr[IPX_ADDRESS_LENGTH]; // and what we seek
+} SAP_DATA, *PSAP_DATA;
+
+//
+//
+// Sap bcast control
+// An important note. fFlags is set only by the thread executing
+// a LookupServiceBegin or a LookupServiceNext. It may be tested by
+// any thread. Its counterpart, dwControlFlags in SAP_RNR_CONTEXT
+// is reserved for setting by LookupServiceBegin and LookupServiceEnd. Once
+// again any thread may look at it. This insures no loss of data on an
+// MP machine without needing a critical section.
+//
+
+typedef struct _SAP_BCAST_CONTROL
+{
+ DWORD dwIndex; // loop control
+ DWORD dwTickCount; // tick count of last send
+ DWORD fFlags; // various flags
+ PVOID pvArg;
+ SOCKET s;
+ CRITICAL_SECTION csMonitor; // This is to keep
+ // out internal structures sane. Note
+ // it does not provide rational
+ // serialization. In particular, if
+ // multiple threads use the same
+ // handle simultaneously, there is no
+ // guaranteed serialization.
+ PSAP_DATA psdNext1; // next to return
+ PSAP_DATA psdHead; // list head
+ PSAP_DATA psdTail;
+ struct _SAP_RNR_CONTEXT * psrc; // need this
+ DWORD (*Func)(PVOID pvArg1, PSAP_IDENT_HEADER pSap, PDWORD pdwErr);
+ BOOL (*fCheckCancel)(PVOID pvArg1);
+ WORD wQueryType;
+} SAP_BCAST_CONTROL, *PSAP_BCAST_CONTROL;
+
+//
+// Flags for above
+
+#define SBC_FLAG_NOMORE 0x1
+
+//
+// Structure used by the old RnR Sap lookup as the pvArg value in
+// SAP_BCAST control
+//
+
+#ifndef _NTDEF_
+typedef struct _STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+#ifdef MIDL_PASS
+ [size_is(MaximumLength), length_is(Length) ]
+#endif // MIDL_PASS
+ PCHAR Buffer;
+} OEM_STRING;
+#endif
+
+typedef struct _OldRnRSap
+{
+ OEM_STRING * poem;
+ HANDLE hCancel;
+ LPVOID lpCsAddrBuffer;
+ LPDWORD lpdwBufferLength;
+ DWORD nProt;
+ LPDWORD lpcAddress;
+} OLDRNRSAP, *POLDRNRSAP;
+
+//
+// Return codes from the coroutine
+//
+
+#define dwrcDone 1 // all done, return success
+#define dwrcCancel 2 // all done, return cancelled
+#define dwrcNoWait 3 // keep going, but never wait.
+#define dwrcNil 4 // do whatever you want
+
+//
+// Sap service query packet format
+//
+
+typedef struct _SAP_REQUEST {
+ USHORT QueryType;
+ USHORT ServerType;
+} SAP_REQUEST, *PSAP_REQUEST;
+
+#define QT_GENERAL_QUERY 1
+#define QT_NEAREST_QUERY 3
+
+// The context information we put inside of an RNRNSHANDLE structure
+// to keep track of what we are doing
+// N.B. See comment on SAP_BCAST_CONTROL about the use of dwControlFlags.
+//
+
+typedef struct _SAP_RNR_CONTEXT
+{
+ struct _SAP_RNR_CONTEXT * pNextContext;
+ LONG lSig;
+ LONG lInUse;
+ DWORD dwCount; // count of queries made
+ DWORD fFlags; // always nice to have
+ DWORD dwControlFlags;
+ DWORD fConnectionOriented;
+ WORD wSapId; // the type desired
+ HANDLE Handle; // the corresponding RnR handle
+ DWORD nProt;
+ GUID gdType; // the type we are seeking
+ GUID gdProvider;
+ HANDLE hServer;
+ WCHAR wszContext[48];
+ WCHAR chwName[48]; // the name, if any
+ CHAR chName[48]; // OEM form of the name for SAP
+ DWORD dwUnionType; // type of lookup, once we know
+ union
+ {
+ SAP_BCAST_CONTROL sbc;
+ BINDERYCONTROL bc;
+ } u_type;
+ PVOID pvVersion; // a trick to get the version here.
+} SAP_RNR_CONTEXT, *PSAP_RNR_CONTEXT;
+
+#define RNR_SIG 0xaabbccdd
+//
+// union types
+//
+
+#define LOOKUP_TYPE_NIL 0
+#define LOOKUP_TYPE_SAP 1
+#define LOOKUP_TYPE_BINDERY 2
+
+
+#define SAP_F_END_CALLED 0x1 // generic cancel
+
+
+//
+// Defs for the bindery Class info
+// BUGBUG. These probably should be elsewhere
+// This defines the format of each ClassInfo property segement. It looks
+// somewhat like an actual ClassInfo, but considerably compressed. Note
+// due to marshalling problems, any complex value, such as a GUID,
+// should be stored as a string and then imported. Hence, we define
+// types for what we can anticipate.
+//
+
+typedef struct _BinderyClasses
+{
+ BYTE bType;
+ BYTE bSizeOfType;
+ BYTE bSizeOfString;
+ BYTE bOffset; // where the data area begins
+ BYTE bFlags;
+ BYTE bFiller;
+ WORD wNameSpace; // the applicable namespace
+ CHAR cDataArea[120]; // where the type and string are placed
+} BINDERYCLASSES, *PBINDERYCLASSES;
+
+#define BT_DWORD 1 // DWORD
+#define BT_WORD 2 // WORD
+#define BT_GUID 3 // a string GUID (ASCII)
+#define BT_STR 3 // an OEM string
+#define BT_OID 4 // an object ID (TBD)
+#define BT_BSTR 5 // a binary string (very dangerous)
+#define BT_WSTR 6 // UNICODE string. Unmarshalled!
+
+
+#define RNRTYPE "RNR_TYPE" // prop containing the GUID
+#define RNRCLASSES "RNR_CLASSES" // the other property
+#endif
diff --git a/private/nw/svcdlls/nwwks/inc/sapcmn.h b/private/nw/svcdlls/nwwks/inc/sapcmn.h
new file mode 100644
index 000000000..fa8f8449e
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/inc/sapcmn.h
@@ -0,0 +1,66 @@
+/*++
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ sapcmn.h.h
+
+Abstract:
+
+ Header containing the most basic common SAP definitions. This
+ was derived from the larger file, nwmisc.h in order to
+ be available to either the old RNR or the new RNR routines.
+
+Author:
+
+ Arnold Miller (ArnoldM) 8-Dec-95
+
+Revision History:
+
+ ArnoldM 8-Dec-95 Created from pieces of nwmisc.h
+--*/
+
+#ifndef __SAPCMN_H__
+#define __SAPCMN_H__
+//
+// Definitions common to client and server side files (getaddr.c and service.c)
+//
+
+#define IPX_ADDRESS_LENGTH 12
+#define IPX_ADDRESS_NETNUM_LENGTH 4
+#define SAP_ADDRESS_LENGTH 15
+#define SAP_ADVERTISE_FREQUENCY 60000 // 60 seconds
+#define SAP_MAXRECV_LENGTH 544
+#define SAP_OBJECT_NAME_MAX_LENGTH 48
+
+//
+// N.B. Keep the following defines in synch.
+//
+#define NW_RDR_PREFERRED_SERVER L"\\Device\\Nwrdr\\*"
+#define NW_RDR_NAME L"\\Device\\Nwrdr\\"
+#define NW_RDR_PREFERRED_SUFFIX L"*"
+//
+// Sap server identification packet format
+//
+
+typedef struct _SAP_IDENT_HEADER {
+ USHORT ServerType;
+ UCHAR ServerName[48];
+ UCHAR Address[IPX_ADDRESS_LENGTH];
+ USHORT HopCount;
+} SAP_IDENT_HEADER, *PSAP_IDENT_HEADER;
+
+
+//
+// Sap server identification packet format - Extended
+//
+
+typedef struct _SAP_IDENT_HEADER_EX {
+ USHORT ResponseType;
+ USHORT ServerType;
+ UCHAR ServerName[SAP_OBJECT_NAME_MAX_LENGTH];
+ UCHAR Address[IPX_ADDRESS_LENGTH];
+ USHORT HopCount;
+} SAP_IDENT_HEADER_EX, *PSAP_IDENT_HEADER_EX;
+#endif
diff --git a/private/nw/svcdlls/nwwks/inc/splutil.h b/private/nw/svcdlls/nwwks/inc/splutil.h
new file mode 100644
index 000000000..8e8169eac
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/inc/splutil.h
@@ -0,0 +1,81 @@
+/*++
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ splutil.h
+
+Abstract:
+
+ Header file for utilities used in Novell Print Provider
+
+Author:
+
+ Yi-Hsin Sung (yihsins) 12-Apr-1993
+
+Revision History:
+
+--*/
+
+#ifndef _SPLUTIL_H_
+#define _SPLUTIL_H_
+
+#define offsetof(type, identifier) (DWORD)(&(((type)0)->identifier))
+
+extern DWORD PrinterInfo1Offsets[];
+extern DWORD PrinterInfo2Offsets[];
+extern DWORD PrinterInfo3Offsets[];
+extern DWORD JobInfo1Offsets[];
+extern DWORD JobInfo2Offsets[];
+extern DWORD AddJobInfo1Offsets[];
+
+VOID
+MarshallUpStructure(
+ LPBYTE lpStructure,
+ LPDWORD lpOffsets,
+ LPBYTE lpBufferStart
+);
+
+VOID
+MarshallDownStructure(
+ LPBYTE lpStructure,
+ LPDWORD lpOffsets,
+ LPBYTE lpBufferStart
+);
+
+LPVOID
+AllocNwSplMem(
+ IN DWORD flags,
+ IN DWORD cb
+ );
+
+VOID
+FreeNwSplMem(
+ IN LPVOID pMem,
+ IN DWORD cb
+ );
+
+LPWSTR
+AllocNwSplStr(
+ IN LPWSTR pStr
+ );
+
+VOID
+FreeNwSplStr(
+ IN LPWSTR pStr
+);
+
+BOOL
+ValidateUNCName(
+ IN LPWSTR pName
+);
+
+LPWSTR
+GetNextElement(
+ OUT LPWSTR *pPtr,
+ IN WCHAR token
+);
+
+
+#endif // _SPLUTIL_H