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.
|
|
//========================================================================
// Copyright (C) 1997 Microsoft Corporation
// Author: RameshV
// Description: This file has been generated. Pl look at the .c file
//========================================================================
#define IS_SWITCHED(X) (((X) & 0x00000002)?TRUE:FALSE)
#define IS_DISABLED(X) (((X) & 0x00000001)?TRUE:FALSE)
#define SWITCHED(X) ((X) |= 0x00000002 )
#define DISABLED(X) ((X) |= 0x00000001 )
BOOL MemSubnetRequestAddress( IN OUT PM_SUBNET Subnet, // the subnet to start the search in
IN DWORD Address, // init. addr: 0 => search in SuperScope, SubnetAddr = try subnet first
IN BOOL fAcquire, // also acquire the address? or just test for availability?
IN BOOL fBootp, // acquire BOOTP address?
OUT DWORD *RetAddress, // OPTIONAL if Address is not 0 or SubnetAddr -- address obtained
OUT PM_SUBNET *RetSubnet // OPTIONAL if Address is not 0 - which subnet is the address from
) ;
DWORD MemServerReleaseAddress( IN OUT PM_SERVER Server, IN DWORD Address, IN BOOL fBootp ) ;
DWORD _inline MemSubnetReleaseAddress( IN OUT PM_SUBNET Subnet, IN DWORD Address, IN BOOL fBootp ) { DWORD Error; DWORD OldState; PM_RANGE Range; PM_EXCL Excl; PM_RESERVATION Reservation;
AssertRet(Subnet, ERROR_INVALID_PARAMETER);
if( Subnet->fSubnet && Subnet->Address != (Address & Subnet->Mask ) ) return MemServerReleaseAddress( Subnet->ServerPtr, Address, fBootp );
Error = MemSubnetGetAddressInfo( Subnet, Address, &Range, NULL, &Reservation ); if( ERROR_SUCCESS != Error ) return Error; Require(Range);
if( NULL != Reservation ) { Require(FALSE); return ERROR_INVALID_PARAMETER; } if( 0 == (Range->State & (fBootp? MM_FLAG_ALLOW_BOOTP: MM_FLAG_ALLOW_DHCP))) { return ERROR_INVALID_PARAMETER; }
Error = MemBitSetOrClear( Range->BitMask, Address - Range->Start, FALSE /* Release */, &OldState ); if( ERROR_SUCCESS != Error ) return Error; if( OldState == FALSE ) return ERROR_FILE_NOT_FOUND;
InterlockedIncrement(&Range->DirtyOps); if( fBootp && 0 != Range->BootpAllocated ) { InterlockedDecrement( &Range->BootpAllocated ); }
return ERROR_SUCCESS; }
BOOL // TRUE ==> allowed, FALSE ==> not allowed
MemSubnetCheckBootpDhcp( IN PM_SUBNET Subnet, IN BOOL fBootp, IN BOOL fCheckSuperScope ) ;
//========================================================================
// end of file
//========================================================================
|