Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

215 lines
5.3 KiB

/**********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1990, 1991 **/
/**********************************************************************/
/*
pchar.c
mapping layer for NetChar API
FILE HISTORY:
danhi Created
danhi 01-Apr-1991 Change to LM coding style
*/
#define INCL_NET
#define INCL_DOSERRORS
#define INCL_DOSMEMMGR
#include <os2.h>
#include <lan.h>
#include <stdlib.h>
#include "port1632.h"
USHORT MNetCharDevControl (
const CHAR FAR * pszServer,
const CHAR FAR * pszDevName,
USHORT wpOpCode ) {
return(NetCharDevControl(pszServer, pszDevName, wpOpCode));
}
USHORT MNetCharDevEnum (
const CHAR FAR * pszServer,
SHORT Level,
CHAR FAR ** ppBuffer,
USHORT FAR * pcEntriesRead ) {
USHORT usReturnCode,
cbTotalAvail;
SEL sel;
// get a 4K buffer
*ppBuffer = MGetBuffer(BIG_BUFFER_SIZE);
if (*ppBuffer == NULL)
{
return(ERROR_NOT_ENOUGH_MEMORY);
}
usReturnCode = NetCharDevEnum(pszServer, Level, *ppBuffer, BIG_BUFFER_SIZE,
pcEntriesRead, & cbTotalAvail);
// is there more data? if so, allocate a big enough buffer to get it
if(usReturnCode == ERROR_MORE_DATA || usReturnCode == NERR_BufTooSmall) {
NetApiBufferFree(*ppBuffer);
if (DEBUGALLOC(FULL_SEG_BUFFER_SIZE, & sel, SEG_NONSHARED)) {
return(ERROR_NOT_ENOUGH_MEMORY);
}
*ppBuffer = MAKEP(sel, 0);
usReturnCode = NetCharDevEnum(pszServer, Level, *ppBuffer, FULL_SEG_BUFFER_SIZE,
pcEntriesRead, & cbTotalAvail);
}
// If we're returning an error that's not moredata, or there are no
// entries to return, free the buffer first
if ((usReturnCode && usReturnCode != ERROR_MORE_DATA &&
usReturnCode != NERR_BufTooSmall) || *pcEntriesRead == 0) {
NetApiBufferFree(*ppBuffer);
}
return (usReturnCode);
}
USHORT MNetCharDevGetInfo (
const CHAR FAR * pszServer,
const CHAR FAR * pszDevName,
SHORT Level,
CHAR FAR ** ppBuffer ) {
USHORT usReturnCode,
cbTotalAvail;
// get a small buffer
*ppBuffer = MGetBuffer(LITTLE_BUFFER_SIZE);
if (*ppBuffer == NULL)
{
return(ERROR_NOT_ENOUGH_MEMORY);
}
usReturnCode = NetCharDevGetInfo(pszServer, pszDevName, Level, *ppBuffer,
LITTLE_BUFFER_SIZE, & cbTotalAvail);
// If we're returning an error that's not moredata, free the buffer first
if (usReturnCode && usReturnCode != ERROR_MORE_DATA &&
usReturnCode != NERR_BufTooSmall) {
NetApiBufferFree(*ppBuffer);
}
return (usReturnCode);
}
USHORT MNetCharDevQEnum (
const CHAR FAR * pszServer,
const CHAR FAR * pszUserName,
SHORT Level,
CHAR FAR ** ppBuffer,
USHORT FAR * pcEntriesRead ) {
USHORT usReturnCode,
cbTotalAvail;
SEL sel;
// get a 4K buffer
*ppBuffer = MGetBuffer(BIG_BUFFER_SIZE);
if (*ppBuffer == NULL)
{
return(ERROR_NOT_ENOUGH_MEMORY);
}
usReturnCode = NetCharDevQEnum(pszServer, pszUserName, Level, *ppBuffer,
BIG_BUFFER_SIZE, pcEntriesRead, & cbTotalAvail);
// is there more data? if so, allocate a big enough buffer to get it
if(usReturnCode == ERROR_MORE_DATA || usReturnCode == NERR_BufTooSmall)
{
NetApiBufferFree(*ppBuffer);
if (DEBUGALLOC(FULL_SEG_BUFFER_SIZE, & sel, SEG_NONSHARED))
{
return(ERROR_NOT_ENOUGH_MEMORY);
}
*ppBuffer = MAKEP(sel, 0);
usReturnCode = NetCharDevQEnum(pszServer, pszUserName, Level, *ppBuffer,
FULL_SEG_BUFFER_SIZE, pcEntriesRead, & cbTotalAvail);
}
// If we're returning an error that's not moredata, or there are no
// entries to return, free the buffer first
if ((usReturnCode && usReturnCode != ERROR_MORE_DATA &&
usReturnCode != NERR_BufTooSmall) || *pcEntriesRead == 0) {
NetApiBufferFree(*ppBuffer);
}
return (usReturnCode);
}
USHORT MNetCharDevQGetInfo (
const CHAR FAR * pszServer,
const CHAR FAR * pszQueueName,
const CHAR FAR * pszUserName,
SHORT Level,
CHAR FAR ** ppBuffer ) {
USHORT usReturnCode,
cbTotalAvail;
// get a small buffer
*ppBuffer = MGetBuffer(LITTLE_BUFFER_SIZE);
if (*ppBuffer == NULL)
{
return(ERROR_NOT_ENOUGH_MEMORY);
}
usReturnCode = NetCharDevQGetInfo(pszServer, pszQueueName, pszUserName,
Level, *ppBuffer, LITTLE_BUFFER_SIZE, & cbTotalAvail);
// If we're returning an error that's not moredata, free the buffer first
if (usReturnCode && usReturnCode != ERROR_MORE_DATA &&
usReturnCode != NERR_BufTooSmall) {
NetApiBufferFree(*ppBuffer);
}
return (usReturnCode);
}
USHORT MNetCharDevQSetInfo (
const CHAR FAR * pszServer,
const CHAR FAR * pszQueueName,
SHORT Level,
const CHAR FAR * pbBuffer,
USHORT cbBuffer,
USHORT wpParmNum ) {
return(NetCharDevQSetInfo(pszServer, pszQueueName, Level,
pbBuffer, cbBuffer, wpParmNum));
}
USHORT MNetCharDevQPurge (
const CHAR FAR * pszServer,
const CHAR FAR * pszQueueName ) {
return(NetCharDevQPurge(pszServer, pszQueueName));
}
USHORT MNetCharDevQPurgeSelf (
const CHAR FAR * pszServer,
const CHAR FAR * pszQueueName,
const CHAR FAR * pszComputerName ) {
return(NetCharDevQPurgeSelf(pszServer, pszQueueName,
pszComputerName));
}