I've set up a 2-field sort:
---------
CEDBASEINFOEX dbinfo;
....
dbinfo.rgSortSpecs[0].wVersion = SORTORDERSPECEX_VERSION;
dbinfo.rgSortSpecs[0].wNumProps = 2;
dbinfo.rgSortSpecs[0].wKeyFlags = 0;
dbinfo.rgSortSpecs[0].rgPropID[0] = MAKELONG(CEVT_I4, FIELDS_PROP_FORMUID);
dbinfo.rgSortSpecs[0].rgdwFlags[0] = CEDB_SORT_GENERICORDER;
dbinfo.rgSortSpecs[0].rgPropID[1] = MAKELONG(CEVT_I2, FIELDS_PROP_DISPIDX);
dbinfo.rgSortSpecs[0].rgdwFlags[1] = CEDB_SORT_GENERICORDER;
....
CeCreateDatabaseEx2(&(m_pDb->m_guidVol), &dbInfo);

I enter records as:
1, 0
1, 1
1, 2
---------

When I step through using
CeSeekDatabaseEx(m_hDb, CEDB_SEEK_BEGINNING, 0, 0, 0);
and CeSeekDatabaseEx(m_hDb, CEDB_SEEK_CURRENT, 1, 0, 0);

I get back:
1, 1
1, 2
1, 0
2, 1
2, 2
2. 0


Any suggestions what to look at?