You hit this error setting up a Data Collector Set
I know the feeling — you're configuring a Data Collector Set in Windows Performance Monitor, you've carefully chosen which API calls to include and exclude, and then Windows throws 0x80300105 at you with that cryptic "conflict" message. The fix is straightforward once you know what's happening.
Quick fix: split your include and exclude filters
The error means you've added both an Include and an Exclude filter to the same API tracing path in a single Data Collector Set. Windows Performance Monitor simply won't accept that — it sees a logical contradiction and refuses to start the trace.
Here's what you do:
- Open Performance Monitor (
perfmon.msc). - Navigate to Data Collector Sets → User Defined.
- Find the failing Data Collector Set, right-click it, and choose Properties.
- Go to the Performance Counter tab or Trace tab (whichever uses API tracing).
- Remove either the Include or the Exclude filter from that path. You can't have both on the same path inside one collector set.
- Click OK and start the set again. It should run.
If you need both include and exclude logic, create two separate Data Collector Sets — one for includes, one for excludes. Then group them under a parent Data Collector Set if you want them to run together.
Why this happens — the real reason
What's actually happening here is that Windows Performance Monitor's trace engine uses a single filter rule per collector for each API tracing path. The Include and Exclude lists are meant to be mutually exclusive within that rule — they're parsed as a single filter expression, not two independent ones. When you provide both, the parser detects the contradiction at initialization and returns PLA_E_CONFLICT_INCL_EXCL_API to tell you it can't resolve which APIs to trace.
The reason step 3 works (splitting across multiple collector sets) is that each collector set gets its own independent filter context. The trace engine then merges their output at a higher level, avoiding the parser conflict entirely.
Less common variations of the same issue
You might see this error in a few other places:
- Using
logman.exefrom the command line — If you pass both-incland-exclflags for the same provider in a singlelogman create tracecommand, you'll get the same error. Drop one flag, or use separate commands. - WMI-based scripts — Scripts that set
IncludeAPIsandExcludeAPIson the sameTraceDataProviderobject in PowerShell or VBScript will fail. Only set one property, then create a second instance for the other filter. - Importing a Data Collector Set XML — If the XML has both
<IncludeAPIs>and<ExcludeAPIs>inside the same<TraceDataProvider>element, the import fails with this error. Edit the XML to split them into separate provider definitions.
Prevention — keep your filters clean
To avoid this in the future:
- Design each Data Collector Set with a single-purpose filter. If you're tracing all APIs except a few, use Exclude only. If you're tracing only specific APIs, use Include only.
- When you need complex logic (e.g., include A and B but exclude C), use nested Data Collector Sets — each child collector has a single filter, and the parent runs them together.
- Test your
logmancommands interactively before scripting them. The error message is unambiguous once you've seen it once. - If you're using WMI or PowerShell, validate that you're not setting both properties on the same object. The API surface is unforgiving here — it expects exactly one filter per provider instance.
That's it. Split your filters, and the error disappears. No registry hacks, no service restarts, no reinstalling Windows. Just cleaner trace design.