WmipProbeWnodeSingleInstance
NTSTATUS __stdcall WmipProbeWnodeSingleInstance(
tagWNODE_SINGLE_INSTANCE *Wnode,
UINT64 InBufferLen,
UINT64 OutBufferLen,
UINT8 OutBound){
int v4;
bool CheckInBound;
NTSTATUS result;
ULONG Flags;
UINT64 DataBlockSize;
UINT64 InBufferLena;
UINT64 OutBufferLena;
v4 = InBufferLen;
if( (unsigned int)InBufferLen < 0x40 )
return -1073741823;
CheckInBound = OutBound == 0;
if( OutBound )
{
if( (unsigned int)OutBufferLen < 0x40 )
return -1073741823;
CheckInBound = OutBound == 0;
}
LODWORD(OutBufferLena) = OutBufferLen;
LODWORD(InBufferLena) = InBufferLen;
LODWORD(DataBlockSize) = Wnode->SizeDataBlock;
result = WmipProbeWnodeWorker(
&Wnode->WnodeHeader,
0x40ui64,
Wnode->OffsetInstanceName,
Wnode->DataBlockOffset,
DataBlockSize,
InBufferLena,
OutBufferLena,
OutBound,
CheckInBound);
if( result < 0 )
return result;
Flags = Wnode->WnodeHeader.Flags;
if( (Flags & 2) == 0 || v4 != Wnode->WnodeHeader.BufferSize || (Flags & 0xFFFFFF7D) != 0 )
return -1073741823;
return 0;
}Referenced by:
WmipIoControl