In theory, there is nothing to prevent an argument declared as _Inout_ having the const qualifier, when that argument is a pointer to a structure.
For instance, the  argument in the call to D3DKMTEnumAdapters2 is a pointer to a D3DKMT_ENUMADAPTERS2 structure, which is defined as follows:
typedef struct _D3DKMT_ENUMADAPTERS2 {
  ULONG              NumAdapters;
  D3DKMT_ADAPTERINFO *pAdapters;
} D3DKMT_ENUMADAPTERS2;
Now, if the pAdapters member were a pre-allocated array of D3DKMT_ADAPTERINFO objects (of size specified in the NumAdapters member), and all the function did was to fill that data array with the relevant information for each adapter, then the passed structure itself would not have been modified – so there is no conflict with the const qualifier on the argument.
However, from the documentation for D3DKMTEnumAdapters2, it appears that the NumAdapers member itself is also changed (potentially):
When D3DKMT_ENUMADAPTERS2::pAdapters is null,
D3DKMT_ENUMADAPTERS2::NumAdapters is set to the maximum supported
adapter count. Callees will commonly invoke the method, first, to
retrieve the maximum supported adapter count.
Thus, according to that paragraph, the const attribute will be violated when the function is called with a NULL value for the pAdapters member of the passed (pointed-to) structure.
Note that the linked documentation also implies that the NumAdapters member is modified, even when a non-null pAdapters value is given (emphasis mine):
Caller passes in array size and empty array space. Callee verifies
enough room in the array, fills out array, and passes back how much
of the array was used.