PiCMReturnBufferResultData

NTSTATUS __stdcall PiCMReturnBufferResultData(
        UINT64 Result,
        UINT64 RequiredSize,
        UINT64 Type,
        const VOID *Buffer,
        UINT64 BufferSize,
        UINT64 ExpectedOutputSize,
        VOID *IoctlOutputBuffer,
        UINT64 IoctlOutputBufferSize,
        UINT64 *BytesUsed){
  NTSTATUS v10; 
  __int128 v12; 

  *(_DWORD *)BytesUsed = 0;
  v10 = 0;
  if( (unsigned int)IoctlOutputBufferSize < (int)BufferSize + 20 || (_DWORD)ExpectedOutputSize != 20 )
    return -1073741811;
  LODWORD(v12) = 20;
  DWORD1(v12) = Result;
  DWORD2(v12) = RequiredSize;
  HIDWORD(v12) = Type;
  ProbeForWrite((UINT64)IoctlOutputBuffer, (unsigned int)IoctlOutputBufferSize, 4i64);
  *(_OWORD *)IoctlOutputBuffer = v12;
  *((_DWORD *)IoctlOutputBuffer + 4) = 0;
  if( (_DWORD)BufferSize )
    memmove((char *)IoctlOutputBuffer + 16, Buffer, BufferSize);
  *(_DWORD *)BytesUsed = BufferSize + 20;
  return v10;
}

Referenced by:

PiCMCreateDevice
PiCMEnumerateSubKeys
PiCMGetDeviceIdList
PiCMGetDeviceInterfaceAlias
PiCMGetDeviceInterfaceList
PiCMGetObjectList
PiCMGetObjectProperty
PiCMGetObjectPropertyKeys
PiCMGetRegistryProperty
PiCMGetRelatedDeviceInstance
PiCMQueryRemove
PiCMRegisterDeviceInterface