SeAuditPlugAndPlay
VOID __stdcall SeAuditPlugAndPlay(
_UNICODE_STRING *DeviceInstanceId,
_UNICODE_STRING *DeviceDesc,
_UNICODE_STRING *HardwareIds,
_UNICODE_STRING *CompatibleIds,
_UNICODE_STRING *LocationInformation,
_GUID *ClassId,
_UNICODE_STRING *ClassName,
_SE_PLUGPLAY_AUDIT_OPERATION_TYPE AuditOperationType,
UINT8 AuditSuccess){
ULONG v13;
ULONG v14;
_QWORD *PrimaryToken;
void *ClientToken;
unsigned __int8 *v17;
unsigned __int64 v18;
__int64 v19;
UINT8 pbPreventCoaf[8];
_SECURITY_SUBJECT_CONTEXT SubjectContext;
_SE_ADT_PARAMETER_ARRAY_EX AuditParameters;
SubjectContext.ClientToken = 0i64;
SubjectContext.ImpersonationLevel = 0x80000000;
memset(&SubjectContext.ImpersonationLevel + 1, 0, 20);
memset(&AuditParameters, 0i64, sizeof(AuditParameters));
pbPreventCoaf[0] = 0;
if( AuditOperationType )
{
switch( AuditOperationType )
{
case SE_PLUGPLAY_AUDIT_DISABLE_REQUEST:
v13 = 6419;
break;
case SE_PLUGPLAY_AUDIT_DISABLE_ACTION:
v13 = 6420;
break;
case SE_PLUGPLAY_AUDIT_ENABLE_REQUEST:
v13 = 6421;
break;
case SE_PLUGPLAY_AUDIT_ENABLE_ACTION:
v13 = 6422;
break;
case SE_PLUGPLAY_AUDIT_INSTALL_BLOCKED:
v13 = 6423;
break;
case SE_PLUGPLAY_AUDIT_INSTALL_UNBLOCKED:
v13 = 6424;
break;
default:
return;
}
v14 = 0;
}
else
{
v13 = 6416;
v14 = 1;
}
AuditParameters.ParameterCount = 0;
AuditParameters.AuditId = v13;
AuditParameters.CategoryId = 5;
AuditParameters.FlatSubCategoryId = 137;
AuditParameters.Version = v14;
AuditParameters.Type = 8;
if( !AuditSuccess )
AuditParameters.Type = 16;
SeCaptureSubjectContext((INT64)&SubjectContext);
PrimaryToken = SubjectContext.PrimaryToken;
ClientToken = SubjectContext.PrimaryToken;
if( SubjectContext.ClientToken )
ClientToken = SubjectContext.ClientToken;
if( SubjectContext.ClientToken )
PrimaryToken = SubjectContext.ClientToken;
v17 = (unsigned __int8 *)**((_QWORD **)ClientToken + 19);
v18 = PrimaryToken[3];
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeSid;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = 4 * v17[1] + 8;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Address = v17;
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeString;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = 32;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Address = (void *)&SeSubsystemName;
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeLogonId;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = 8;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Data[0] = v18;
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeString;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = DeviceInstanceId->Length + 16;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Address = DeviceInstanceId;
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeString;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = DeviceDesc->Length + 16;
AuditParameters.Parameters[AuditParameters.ParameterCount].Address = DeviceDesc;
v19 = ++AuditParameters.ParameterCount;
AuditParameters.Parameters[v19].Type = SeAdtParmTypeGuid;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = 16;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Address = ClassId;
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeString;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = ClassName->Length + 16;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Address = ClassName;
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeMultiSzString;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = HardwareIds->Length + 16;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Address = HardwareIds;
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeMultiSzString;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = CompatibleIds->Length + 16;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Address = CompatibleIds;
AuditParameters.Parameters[AuditParameters.ParameterCount].Type = SeAdtParmTypeMultiSzString;
AuditParameters.Parameters[AuditParameters.ParameterCount].Length = LocationInformation->Length + 16;
AuditParameters.Parameters[AuditParameters.ParameterCount++].Address = LocationInformation;
AdtpWriteToEtwEx(&AuditParameters, pbPreventCoaf);
SeReleaseSubjectContext(&SubjectContext);
}Referenced by:
PiAuditDeviceOperation