#ifndef GPUMON_H #define GPUMON_H // Macros #define BYTES_NEEDED_FOR_BITS(Bits) ((((Bits) + sizeof(ULONG) * 8 - 1) / 8) & ~(SIZE_T)(sizeof(ULONG) - 1)) // divide round up // Structures typedef struct _ETP_GPU_ADAPTER { LUID AdapterLuid; PPH_STRING Description; ULONG SegmentCount; ULONG NodeCount; ULONG FirstNodeIndex; BOOLEAN HasActivity; RTL_BITMAP ApertureBitMap; ULONG ApertureBitMapBuffer[1]; } ETP_GPU_ADAPTER, *PETP_GPU_ADAPTER; // Functions BOOLEAN EtpInitializeD3DStatistics( VOID ); PETP_GPU_ADAPTER EtpAllocateGpuAdapter( _In_ ULONG NumberOfSegments ); PPH_STRING EtpQueryDeviceDescription( _In_ PWSTR DeviceInterface ); VOID NTAPI EtGpuProcessesUpdatedCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ); #endif