WmipSendWmiIrp
INT64 __stdcall WmipSendWmiIrp(
UINT8 MinorFunction,
UINT64 ProviderId,
VOID *DataPath,
UINT64 BufferLength,
VOID *Buffer,
IO_STATUS_BLOCK *Iosb){
int v6;
unsigned int v8;
IRP *Irp;
IRP *v11;
unsigned int v12;
UINT64 BufferLengtha;
v6 = BufferLength;
v8 = ProviderId;
while( 1 )
{
Irp = IoAllocateIrp(*((_BYTE *)WmipServiceDeviceObject + 76) + 1, 0);
v11 = Irp;
if( !Irp )
break;
*((_QWORD *)Irp + 23) -= 72i64;
--*((_BYTE *)Irp + 67);
LODWORD(BufferLengtha) = v6;
*(_QWORD *)(*((_QWORD *)Irp + 23) + 40i64) = WmipServiceDeviceObject;
*((_QWORD *)Irp + 19) = KeGetCurrentThread();
*((_QWORD *)Irp + 3) = Buffer;
v12 = WmipForwardWmiIrp(Irp, MinorFunction, v8, DataPath, BufferLengtha, Buffer);
*Iosb = *((IO_STATUS_BLOCK *)v11 + 3);
IoFreeIrp(v11);
if( v12 != -1073741160 )
return v12;
}
return 3221225626i64;
}Referenced by:
WmipDereferenceEvent
WmipDisableCollectionForRemovedGuid
WmipEnableCollectionForNewGuid
WmipProcessLegacyEtwCallback
WmipQueryAllData
WmipQuerySetExecuteSI
WmipRegisterOrUpdateDS
WmipSendEnableDisableRequest