PCPROPERTY_REQUEST structure (portcls.h)
The PCPROPERTY_REQUEST structure specifies a property request.
Syntax
typedef struct _PCPROPERTY_REQUEST {
PUNKNOWN MajorTarget;
PUNKNOWN MinorTarget;
ULONG Node;
const PCPROPERTY_ITEM *PropertyItem;
ULONG Verb;
ULONG InstanceSize;
PVOID Instance;
ULONG ValueSize;
PVOID Value;
PIRP Irp;
} PCPROPERTY_REQUEST, *PPCPROPERTY_REQUEST;
Members
MajorTarget
IUnknown pointer to the main miniport object. This member contains the UnknownMiniport parameter value that the adapter driver previously passed to the IPort::Init method.
MinorTarget
IUnknown pointer to a stream object that is associated with the MajorTarget miniport object. If the target for the property request is a pin instance, this member contains the stream-object pointer that the IMiniport Xxx::NewStream method previously output to the port driver (for example, the IMiniportWaveCyclic::NewStream method's Stream parameter). Otherwise (if the target for the property request is a filter instance), this member is NULL.
Node
Specifies a node ID. This member identifies the target node for the request. If the target is not a node, this member is set to ULONG(-1).
PropertyItem
Pointer to the property item, which is a structure of type PCPROPERTY_ITEM.
Verb
Specifies the type of property request. Verb is set to the bitwise OR of one or more of the following flag bits from header file ks.h:
- KSPROPERTY_TYPE_GET
- KSPROPERTY_TYPE_SET
- KSPROPERTY_TYPE_SETSUPPORT
- KSPROPERTY_TYPE_BASICSUPPORT
- KSPROPERTY_TYPE_RELATIONS
- KSPROPERTY_TYPE_SERIALIZESET
- KSPROPERTY_TYPE_UNSERIALIZESET
- KSPROPERTY_TYPE_SERIALIZERAW
- KSPROPERTY_TYPE_UNSERIALIZERAW
- KSPROPERTY_TYPE_SERIALIZESIZE
- KSPROPERTY_TYPE_DEFAULTVALUES
- KSPROPERTY_TYPE_TOPOLOGY
InstanceSize
Specifies the size in bytes of the property-instance buffer.
Instance
Pointer to the property-instance buffer
ValueSize
Specifies the size in bytes of the property-value buffer.
Value
Pointer to the property-value buffer
Irp
Pointer to the IRP containing the client's original property request
Remarks
This is the structure that the port driver passes to the miniport driver's property-handler routine. The PCPROPERTY_ITEM structure contains a function pointer to a property handler that takes a PCPROPERTY_REQUEST pointer as its only call parameter. The port driver allocates a PCPROPERTY_REQUEST structure, extracts the relevant information from the original property request (which the Irp member points to), and loads the information into this structure before calling the handler.
In WDM audio, the target of a property request can be either a filter instance or a pin instance. The target can also include a node ID.
In the client's original property request, the property-instance data always begins with a KSPROPERTY or KSNODEPROPERTY structure, but can include additional information. The port driver adjusts the PCPROPERTY_REQUEST structure's Instance member to point to this additional information, if it exists. For details, see Audio Property Handlers.
The MajorTarget and MinorTarget members are IUnknown pointers to the main miniport object and an associated stream object, respectively. The property handler can query these objects for their miniport and stream interfaces. If the target for the property request is a filter instance, MajorTarget points to the miniport object for that filter instance, and MinorTarget is NULL. If the target is a pin instance, MinorTarget points to the stream object for that pin, and MajorTarget points to the miniport object for the filter that the pin is attached to.
For example, if the target for the property request is a pin instance on a WaveCyclic filter:
- The handler can call QueryInterface on the MajorTarget object's IUnknown interface to obtain a reference to the object's IMiniportWaveCyclic interface.
- The handler can call QueryInterface on the MinorTarget object's IUnknown interface to obtain a reference to the object's IMiniportWaveCyclicStream interface.
Requirements
Requirement | Value |
---|---|
Header | portcls.h (include Portcls.h) |