//================================================================================ // Copyright (C) 1997 Microsoft Corporation // Author: RameshV // Description: this is a short program to test the bitmask functionality //================================================================================ #include #include #include #include PM_BITMASK Bit; VOID _cdecl main( VOID ) { DWORD Error; DWORD Offset; DWORD BitSize; DWORD ToSet; DWORD ToSet1, ToSet2; DWORD InUseSize; DWORD UsedSize; BOOL OldState; LPBYTE InUse; LPBYTE Used; printf("Size of bitmask: "); scanf("%ld", &BitSize); Error = MemBitInit(&Bit, BitSize); printf("MemBitInit(&Bit, %ld)=%ld\n", BitSize, Error); while(1) { printf("Enter bit to set [-1 to quit loop] from to: "); scanf("%ld %ld", &ToSet1, &ToSet2); if( -1 == ToSet1 || -1 == ToSet2 ) break; for( ToSet = ToSet1; ToSet <= ToSet2; ToSet ++ ) { Error = MemBitSetOrClear( Bit, ToSet, TRUE, &OldState ); printf("MemBitSetOrClear(%ld)= %ld,OldState=%ld\n", ToSet, Error, OldState); } } Error = MemBitConvertToCluster( Bit, 100, &InUse, &InUseSize, &Used, &UsedSize ); printf("MemBitconvert: %ld\n", Error); if( ERROR_SUCCESS != Error )return; printf("InUseSize= %ld, UsedSize = %ld\n", InUseSize, UsedSize); printf("InUse[0] = %ld\n", *(LPDWORD)InUse); InUse += sizeof(DWORD); InUseSize -= sizeof(DWORD); while(InUseSize) { Offset = *(LPDWORD)InUse; InUse+= sizeof(DWORD); for( ToSet = 0; ToSet < 32; ToSet ++ ) if( (1<