Il vero problema era qui:
tds è un puntatore e come tale la sua sizeof() è 4byte (32bit) o 8byte (64bit) per cui al massimo i caratteri convertiti erano quella quantità. Ricorda che un array passato a una funzione è convertito implicitamente in un puntatore al primo elemento.codice:CharToOemBuffA(tds, tds, sizeof(tds));