STDMETHODIMP CGeometry::lt2pt(long lsect, long *cyl, short *head) { HRESULT hr; dsk_pcyl_t c; dsk_phead_t h; hr = MapError(dg_lt2pt(&m_g, lsect, &c, &h)); *cyl = c; *head = h; return hr; }
LDPUBLIC32 dsk_err_t LDPUBLIC16 dsk_lsecid(DSK_DRIVER *self, const DSK_GEOMETRY *geom, dsk_ltrack_t track, DSK_FORMAT *result) { dsk_err_t e; dsk_pcyl_t cyl; dsk_psect_t sec; e = dg_lt2pt(geom, track, &cyl, &sec); if (e) return e; return dsk_psecid(self, geom, cyl, sec, result); }
LDPUBLIC32 dsk_err_t LDPUBLIC16 dsk_lseek(DSK_DRIVER *self, const DSK_GEOMETRY *geom, dsk_ltrack_t track) { dsk_err_t e; dsk_pcyl_t cyl; dsk_phead_t head; e = dg_lt2pt(geom, track, &cyl, &head); if (e) return e; return dsk_pseek(self, geom, cyl, head); }
LDPUBLIC32 dsk_err_t LDPUBLIC16 dsk_ltrackids(DSK_PDRIVER self, const DSK_GEOMETRY *geom, dsk_ltrack_t track, dsk_psect_t *count, DSK_FORMAT **result) { dsk_err_t e; dsk_pcyl_t cyl; dsk_psect_t sec; e = dg_lt2pt(geom, track, &cyl, &sec); if (e) return e; return dsk_ptrackids(self, geom, cyl, sec, count, result); }
/* Convert logical sector to physical */ LDPUBLIC32 dsk_err_t LDPUBLIC16 dg_ls2ps(const DSK_GEOMETRY *self, /* in */ dsk_lsect_t logical, /* out */ dsk_pcyl_t *cyl, dsk_phead_t *head, dsk_psect_t *sec) { if (!self) return DSK_ERR_BADPTR; if (!self->dg_sectors || !self->dg_heads) return DSK_ERR_DIVZERO; if (logical >= self->dg_cylinders * self->dg_heads * self->dg_sectors) return DSK_ERR_BADPARM; if (sec) *sec = (dsk_psect_t)((logical % self->dg_sectors) + self->dg_secbase); logical /= self->dg_sectors; return dg_lt2pt(self, (dsk_ltrack_t)logical, cyl, head); }