Class descriptors should be read and written using readAddress() and writeAddress() functions, as shown below:
AcDbDwgFiler *pFiler = NULL; if ((pFiler = undoFiler()) != NULL) {undoFiler()->writeItem((long)AsdkPoly::desc()); // Wrong! ... undoFiler()->writeAddress(AsdkPoly::desc()); // Right ...}