Where to put my.ini file for 5.6.21 MySQL Community Server on Windows
The folder C:\Program Files\MySQL\MySQL Server 5.6 is the correct location for my.ini.
There are two possible reasons 1400 shows up as table_definition_cache.
REASON #1
You did not restart mysql.
Login to Windows DOS command line as Administrator and run
C:\&gt; net stop mysql
C:\&gt; net start mysql

Value should be in place afterwards.
REASON #2
The default value for table_definition_cache is -1 (autosized). That makes mysqld figure out a fair value for table_definition_cache, given your OS configuration.
CAVEAT
Make sure you place
table_definition_cache = 400

under the [mysqld] group header before you restart mysql
GIVE IT A TRY !!!
I dug a little further and learned why 1400 comes up for table_definition_cache
According to the Documentation for table_definition_cache

The default value is based on the following formula, capped to a limit of 2000:
400 + (table_open_cache / 2)


The default value for table_open_cache is 2000
Applying the formula
400 + (table_open_cache / 2) =
400 + (2000 / 2) =
400 + 1000 =
1400

One of two things is happening

table_definition_cache is still not being picked up from my.ini
table_definition_cache is being picked up from my.ini, but is being rejected due to needed resources