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.
 
 
 
 
 
 

188 lines
4.0 KiB

/**************************************************************************************************************************
* RESOURCE.C SigmaTel STIR4200 memory allocation module
**************************************************************************************************************************
* (C) Unpublished Copyright of Sigmatel, Inc. All Rights Reserved.
*
*
* Created: 04/06/2000
* Version 0.9
*
*
**************************************************************************************************************************/
#define DOBREAKS // enable debug breaks
#include <ndis.h>
#include <ntddndis.h> // defines OID's
#include <usbdi.h>
#include <usbdlib.h>
#include "debug.h"
#include "ircommon.h"
#include "irndis.h"
/*****************************************************************************
*
* Function: MyMemAlloc
*
* Synopsis: allocates a block of memory using NdisAllocateMemory
*
* Arguments: size - size of the block to allocate
*
* Returns: a pointer to the allocated block of memory
*
*
*****************************************************************************/
PVOID
MyMemAlloc(
UINT size
)
{
PVOID pMem;
NDIS_STATUS status;
status = NdisAllocateMemoryWithTag( &pMem, size, IRUSB_TAG );
if( status != NDIS_STATUS_SUCCESS )
{
DEBUGMSG(DBG_ERR, (" Memory allocation failed\n"));
pMem = NULL;
}
return pMem;
}
/*****************************************************************************
*
* Function: MyMemFree
*
* Synopsis: frees a block of memory allocated by MyMemAlloc
*
* Arguments: memptr - memory to free
* size - size of the block to free
*
*
*****************************************************************************/
VOID
MyMemFree(
PVOID pMem,
UINT size
)
{
NdisFreeMemory( pMem, size, 0 );
}
/*****************************************************************************
*
* Function: MyUrbAlloc
*
* Synopsis: allocates an URB using NdisAllocateMemory
*
* Arguments: size - size of urb to allocate
*
* Returns: a pointer to the urb
*
*****************************************************************************/
PURB
MyUrbAlloc(
UINT size
)
{
PURB pUrb = NULL;
pUrb = MyMemAlloc( size );
if( NULL == pUrb )
{
DEBUGMSG(DBG_ERR, (" IrUsb failed to alloc urb\n"));
}
else
{
NdisZeroMemory( pUrb, size );
}
return pUrb;
}
/*****************************************************************************
*
* Function: MyUrbFree
*
* Synopsis: frees an Urb allocated by MyUrbAlloc
*
* Arguments: pUrb - urb to free
* size - size of the urb to free
*
*
*****************************************************************************/
VOID
MyUrbFree(
PURB pUrb,
UINT size
)
{
MyMemFree(pUrb, size);
}
/*****************************************************************************
*
* Function: NewDevice
*
* Synopsis: allocates an IR device and zeros the memory
*
* Arguments: none
*
* Returns: initialized IR device or NULL (if alloc failed)
*
*
*****************************************************************************/
PIR_DEVICE
NewDevice()
{
PIR_DEVICE pNewDev;
pNewDev = MyMemAlloc( sizeof(IR_DEVICE) );
if( pNewDev != NULL )
{
NdisZeroMemory( (PVOID)pNewDev, sizeof(IR_DEVICE) );
if( !AllocUsbInfo( pNewDev ) )
{
MyMemFree( pNewDev, sizeof(IR_DEVICE) );
pNewDev = NULL;
}
}
return pNewDev;
}
/*****************************************************************************
*
* Function: FreeDevice
*
* Synopsis: frees an IR device structure
*
* Arguments: pThisDev - pointer to device to free
*
* Returns: none
*
*
*****************************************************************************/
VOID
FreeDevice(
IN OUT PIR_DEVICE pThisDev
)
{
FreeUsbInfo( pThisDev );
MyMemFree( (PVOID)pThisDev, sizeof(IR_DEVICE) );
}