The RtlInitializeBitMap routine initializes the header of a bitmap variable.
VOID
RtlInitializeBitMap(
IN PRTL_BITMAP BitMapHeader,
IN PULONG BitMapBuffer,
IN ULONG SizeOfBitMap
);
None
Declared in ntddk.h. Include ntddk.h.
A driver can use a bitmap variable as an economical way to keep track of a set of reusable items. For example, file systems use a bitmap variable to track which clusters/sectors on a disk have already been allocated to hold file data. The system-supplied SCSI port driver uses a bitmap variable to track which queue tags have been assigned to SRBs.
RtlInitializeBitMap must be called before any other RtlXxx that operates on a bitmap variable. The BitMapHeader pointer is an input parameter in all subsequent calls to the RtlXxx that operate on the caller's bitmap variable at BitMapBuffer. The caller is responsible for synchronizing access to the bitmap variable.
RtlInitializeBitMap initializes the caller-supplied RTL_BITMAP structure by copying the caller-supplied BitMapBuffer and SizeOfBitMap values into it. Subsequently, the structure can be passed to other routines to manipulate the bitmap. RtlInitializeBitMap does not modify the contents of the bitmap.
Callers of RtlInitializeBitMap must be running at IRQL < DISPATCH_LEVEL. Callers of RtlXxx that operate on an initialized bitmap variable must be running at IRQL < DISPATCH_LEVEL if the memory containing the bitmap variable or at BitmapHeader is pageable; otherwise, callers can be running at any IRQL.
ExInitializeFastMutex, RtlAreBitsClear, RtlAreBitsSet, RtlCheckBit, RtlClearAllBits, RtlClearBits, RtlFindClearBits, RtlFindClearBitsAndSet, RtlFindClearRuns, RtlFindFirstRunClear, RtlFindLastBackwardRunClear, RtlFindLongestRunClear, RtlFindNextForwardRunClear, RtlFindSetBits, RtlFindSetBitsAndClear, RtlNumberOfClearBits, RtlNumberOfSetBits, RtlSetAllBits, RtlSetBits