rem: GetExtras(ioreq)->Channel = NOCHANNEL; GetExtras(ioreq)->Sound   = AHI_NOSOUND; GetExtras(ioreq)->Count   = 2;
add: GetExtras(ioreq)->Channel   = NOCHANNEL; GetExtras(ioreq)->Sound     = AHI_NOSOUND; GetExtras(ioreq)->VolumeDiv = 1;
context: WriteCmd ( struct AHIRequest *ioreq,           struct AHIBase *AHIBase ){  struct AHIDevUnit *iounit;  ULONG error = 0;  if(AHIBase->ahib_DebugLevel >= AHI_DEBUG_HIGH)  {    KPrintF("CMD_WRITE\n");  }  iounit = (struct AHIDevUnit *) ioreq->ahir_Std.io_Unit;  ioreq->ahir_Std.io_Actual = 0;  /* Start playback if neccessary */  if( ! iounit->IsPlaying)  {    if( (! iounit->FullDuplex) && iounit->IsRecording)    {      error = AHIE_HALFDUPLEX;   // FIXIT!    }    else    {      error = AHI_ControlAudio(iounit->AudioCtrl,         AHIC_Play,TRUE,         TAG_DONE);    }    if( ! error)    {      iounit->IsPlaying = TRUE;    }  }  ioreq->ahir_Extras = (ULONG) AllocVec(sizeof(struct Extras), MEMF_PUBLIC|MEMF_CLEAR);  if(ioreq->ahir_Extras == 0)  {    error = AHIE_NOMEM;  }  else  {    // Initialize the structure    GetExtras(ioreq)->Channel = NOCHANNEL;    GetExtras(ioreq)->Sound   = AHI_NOSOUND;    GetExtras(ioreq)->Count   = 2;  }  if(iounit->IsPlaying && !error)  {    // Convert length in bytes to length in samples    ioreq->ahir_Std.io_Length /= AHI_SampleFrameSize(ioreq->ahir_Type);    NewWriter(ioreq, iounit, AHIBase);  }  if(error)  {    ioreq->ahir_Std.io_Error = error;    TermIO(ioreq, AHIBase);  }}