#ifndef _NTRTL_H
NTSYSAPI
VOID
NTAPI
RtlInitializeBitMap(
_Out_ PRTL_BITMAP BitMapHeader,
_In_ PULONG BitMapBuffer,
_In_ ULONG SizeOfBitMap
);
View code on GitHub// wdm.h
NTSYSAPI VOID RtlInitializeBitMap(
[out] PRTL_BITMAP BitMapHeader,
[in] __drv_aliasesMem PULONG BitMapBuffer,
[in] ULONG SizeOfBitMap
);
View the official Windows Driver Kit DDI referenceThis function is documented in Windows Driver Kit.
The RtlInitializeBitMap routine initializes the header of a bitmap variable.
BitMapHeader [out]Pointer to an empty RTL_BITMAP structure.
BitMapBuffer [in]Pointer to caller-allocated memory for the bitmap itself. The base address of this buffer must be ULONG-aligned. The size of the allocated buffer must be an integer multiple of sizeof(ULONG) bytes.
SizeOfBitMap [in]Specifies the number of bits in the bitmap. This value can be any number of bits that will fit in the buffer allocated for the bitmap.
None
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 SCSI request blocks (SRBs).
RtlInitializeBitMap must be called before any other Rtl*Xxx* routine that operates on a bitmap variable. The BitMapHeader pointer is an input parameter in all subsequent Rtl*Xxx* calls 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.