code: func (c *client) Pause(_ context.Context, containerID string) error {
  	ctr, _, err := c.getProcess(containerID, libcontainerdtypes.InitProcessName)
  	if err != nil {
  		return err
  	}
  
  	if ctr.ociSpec.Windows.HyperV == nil {
  		return errors.New("cannot pause Windows Server Containers")
  	}
  
  	ctr.Lock()
  	defer ctr.Unlock()
  
  	if err = ctr.hcsContainer.Pause(); err != nil {
  		return err
  	}
  
  	ctr.status = containerd.Paused
  
  	c.eventQ.Append(containerID, func() {
  		err := c.backend.ProcessEvent(containerID, libcontainerdtypes.EventPaused, libcontainerdtypes.EventInfo{
  			ContainerID: containerID,
  			ProcessID:   libcontainerdtypes.InitProcessName,
  		})
  		c.logger.WithFields(logrus.Fields{
  			"container": ctr.id,
  			"event":     libcontainerdtypes.EventPaused,
  		}).Info("sending event")
  		if err != nil {
  			c.logger.WithError(err).WithFields(logrus.Fields{
  				"container": containerID,
  				"event":     libcontainerdtypes.EventPaused,
  			}).Error("failed to process event")
  		}
  	})
  
  	return nil
  }
docs: // Pause handles pause requests for containers