// hdaudio.h
typedef struct _HDAUDIO_CODEC_RESPONSE {
union {
struct {
union {
struct {
ULONG Response : 21;
ULONG SubTag : 5;
ULONG Tag : 6;
} Unsolicited;
ULONG Response;
};
ULONG SDataIn : 4;
ULONG IsUnsolicitedResponse : 1;
ULONG HasFifoOverrun : 1;
ULONG IsValid : 1;
};
ULONGLONG CompleteResponse;
};
} HDAUDIO_CODEC_RESPONSE, *PHDAUDIO_CODEC_RESPONSE;
View the official Windows Driver Kit DDI referenceNo description available.
The HDAUDIO_CODEC_RESPONSE structure specifies either a response to a codec command or an unsolicited response from a codec.
UnsolicitedSpecifies a 32-bit unsolicited response value that consists of a 26-bit response value and a 6-bit tag value.
Unsolicited.ResponseSpecifies a 21-bit unsolicited response value.
Unsolicited.SubTagSpecifies a 5-bit SubTag.
Unsolicited.TagSpecifies a 6-bit tag value for an unsolicited response.
ResponseSpecifies a response value.
SDataInSpecifies the 4-bit codec address (SDI line) of the codec that generates the response.
IsUnsolicitedResponseSpecifies whether the response is unsolicited. If 1, the response is unsolicited. If 0, the response is solicited (that is, a response to a codec command).
HasFifoOverrunSpecifies whether a FIFO overrun occurred in the response input ring buffer (RIRB). If 1, a FIFO overrun occurred. If 0, a FIFO overrun did not occur.
IsValidSpecifies whether the response is valid. If 1, the response is valid. If 0, it is not valid.
CompleteResponseSpecifies a complete, 64-bit response summary that consists of a 32-bit response, 4-bit codec address, three status bits, and 25 unused bits (set to zero). This value is mostly used in debug messages.
After calling the TransferCodecVerbs routine, function drivers can use the HDAUDIO_CODEC_RESPONSE structure to decode the responses to their codec commands. The commands are contained in the HDAUDIO_CODEC_TRANSFER structures that clients pass to this routine as call parameters.
The callback for the RegisterEventCallback routine also uses the HDAUDIO_CODEC_RESPONSE structure.
Most members of this structure contain hardware-generated values that the bus driver copies directly from the corresponding RIRB entry. The two exceptions are the values of the IsValid and HasFifoOverrun members, which the bus driver software writes to the structure to indicate the error status of the response. For information about the RIRB entry format, see the Intel High Definition Audio Specification at the Intel HD Audio website.
If IsValid=0, one of the following has occurred:
The unnamed 25-bitfield between the UnsolicitedResponse and HasFifoOverrun members is reserved for future expansion. The HD Audio bus controller currently writes zeros to this field.