Here's the code I used to test CreateFile, I was able to open 10,000 files (didn't try any more than that):
#include <stdio.h>
#include <windows.h>
int main()
{
const int numFiles = 10000;
HANDLE hFiles[numFiles];
char buff[256];
int i;
for (i = 0; i < numFiles; i++) {
sprintf(buff, "G:\\test\\%05d.txt", i);
hFiles[i] = CreateFile(buff, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
if (hFiles[i] == INVALID_HANDLE_VALUE) {
printf("Unable to create file %d\n", i);
}
}
for (i = 0; i < numFiles; i++) {
if (hFiles[i] != INVALID_HANDLE_VALUE) {
DWORD bytesWritten;
sprintf(buff, "Writing to file %d", i);
if (!WriteFile(hFiles[i], buff, strlen(buff), &bytesWritten, NULL)) {
printf("Unable to write to file %d\n", i);
}
}
}
for (i = 0; i < numFiles; i++) {
if (hFiles[i] != INVALID_HANDLE_VALUE) {
CloseHandle(hFiles[i]);
}
}
return 0;
}
I'm using Windows 2000.