1 #include <stdio.h>
2 #include <windows.h>
3
4 #define PROGRAM "test2"
5 #define PROGRAM_W L"test2"
6
7 #define MAX_NAME_LENGTH 1000
8
9 #define FWGAS "fwgas" /* File With Growing ASCII Streams */
10 #define FWGUS L"fwgus" /* File With Growing Unicode Streams */
11
12 int
main(int argc,char * argv[])13 main(int argc, char *argv[])
14 {
15 char cObject[MAX_NAME_LENGTH + 1];
16 char cName[MAX_NAME_LENGTH + 1];
17 HANDLE h;
18 int i;
19 int j;
20 int n;
21 WCHAR wcObject[MAX_NAME_LENGTH + 1];
22 WCHAR wcName[MAX_NAME_LENGTH + 1];
23
24 /* ASCII */
25
26 sprintf(cObject, "%s.%s", PROGRAM, FWGAS);
27
28 n = sprintf(cName, "%s:", cObject);
29
30 for (i = 0; i < MAX_NAME_LENGTH; i++)
31 {
32 for (j = 0; j < i + 1; j++)
33 {
34 cName[n+j] = 'S';
35 }
36 cName[n+j] = 0;
37
38 h = CreateFile(
39 cName,
40 GENERIC_WRITE,
41 FILE_SHARE_READ,
42 NULL,
43 CREATE_ALWAYS,
44 FILE_ATTRIBUTE_NORMAL,
45 0
46 );
47 if (h == INVALID_HANDLE_VALUE)
48 {
49 break;
50 }
51 CloseHandle(h);
52 }
53 printf("Object=%s MaxLength=%d LastError=%u\n", cObject, i, GetLastError());
54
55 /* Unicode */
56
57 swprintf(wcObject, L"%s.%s", PROGRAM_W, FWGUS);
58
59 n = swprintf(wcName, L"%s:", wcObject);
60
61 for (i = 0; i < MAX_NAME_LENGTH; i++)
62 {
63 for (j = 0; j < i + 1; j++)
64 {
65 wcName[n+j] = 0x5353;
66 }
67 wcName[n+j] = 0;
68
69 h = CreateFileW(
70 wcName,
71 GENERIC_WRITE,
72 FILE_SHARE_READ,
73 NULL,
74 CREATE_ALWAYS,
75 FILE_ATTRIBUTE_NORMAL,
76 0
77 );
78 if (h == INVALID_HANDLE_VALUE)
79 {
80 break;
81 }
82 CloseHandle(h);
83 }
84 wprintf(L"Object=%s MaxLength=%d LastError=%u\n", wcObject, i, GetLastError());
85
86 return 0;
87 }
88