2 * PROJECT: ReactOS api tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Test for GetDeviceDriverFileName & GetDeviceDriverBaseName
5 * PROGRAMMER: Pierre Schweitzer
20 static LPVOID
IntGetImageBase(LPCSTR Image
)
25 Snap
= CreateToolhelp32Snapshot(TH32CS_SNAPMODULE
, 0);
26 if (Snap
== INVALID_HANDLE_VALUE
)
31 Module
.dwSize
= sizeof(MODULEENTRY32
);
32 if(!Module32First(Snap
, &Module
))
40 if (lstrcmpiA(Module
.szExePath
, Image
) == 0)
43 return (LPVOID
)Module
.modBaseAddr
;
45 } while(Module32Next(Snap
, &Module
));
51 static BOOLEAN
IntGetModuleInformation(LPCSTR Module
, BOOLEAN IsDriver
, BOOLEAN IsProcMod
, BOOLEAN BaseName
, TEST_MODULE_INFO
* Info
)
56 memset(Info
, 0, sizeof(TEST_MODULE_INFO
));
59 Len
= GetSystemWindowsDirectory(System
, 255);
60 if (Len
> 255 || Len
== 0)
62 printf("GetSystemWindowsDirectory failed\n");
66 /* Make path to module */
67 strcat(System
, "\\system32\\");
68 if (IsDriver
) strcat(System
, "drivers\\");
69 strcat(System
, Module
);
71 /* Get base address */
74 Info
->ImageBase
= IntGetImageBase(System
);
77 printf("IntGetImageBase failed\n");
84 printf("Not supported yet!\n");
90 strcpy(Info
->Path
, Module
);
91 Info
->Len
= lstrlenA(Info
->Path
);
96 strcpy(Info
->Path
, System
+ 2);
97 Info
->Len
= lstrlenA(Info
->Path
);
103 START_TEST(GetDeviceDriverFileName
)
107 TEST_MODULE_INFO ModInfo
;
109 SetLastError(0xDEADBEEF);
110 Len
= GetDeviceDriverFileNameA(0, FileName
, 255);
111 ok(Len
== 0, "Len: %lu\n", Len
);
112 ok(GetLastError() == ERROR_INVALID_HANDLE
, "Error: %lx\n", GetLastError());
114 if (IntGetModuleInformation("ntdll.dll", FALSE
, TRUE
, FALSE
, &ModInfo
))
116 SetLastError(0xDEADBEEF);
117 Len
= GetDeviceDriverFileNameA(ModInfo
.ImageBase
, FileName
, 255);
118 ok(Len
== ModInfo
.Len
, "Len: %lu\n", Len
);
119 ok(GetLastError() == 0xDEADBEEF, "Error: %lx\n", GetLastError());
120 ok(lstrcmpiA(ModInfo
.Path
, FileName
) == 0, "File name: %s\n", FileName
);
122 /* Test with too small buffer */
123 SetLastError(0xDEADBEEF);
125 ModInfo
.Path
[ModInfo
.Len
] = 0;
126 FileName
[ModInfo
.Len
] = 0;
127 Len
= GetDeviceDriverFileNameA(ModInfo
.ImageBase
, FileName
, ModInfo
.Len
);
128 ok(Len
== ModInfo
.Len
, "Len: %lu\n", Len
);
129 ok(GetLastError() == 0xDEADBEEF, "Error: %lx\n", GetLastError());
130 ok(lstrcmpiA(ModInfo
.Path
, FileName
) == 0, "File name: %s\n", FileName
);
134 skip("Couldn't find info about ntdll.dll\n");
137 if (IntGetModuleInformation("msvcrt.dll", FALSE
, TRUE
, FALSE
, &ModInfo
))
139 SetLastError(0xDEADBEEF);
140 Len
= GetDeviceDriverFileNameA(ModInfo
.ImageBase
, FileName
, 255);
141 ok(Len
== 0, "Len: %lu\n", Len
);
142 ok(GetLastError() == ERROR_INVALID_HANDLE
, "Error: %lx\n", GetLastError());
146 skip("Couldn't find info about msvcrt.dll\n");
149 if (IntGetModuleInformation("psapi.dll", FALSE
, TRUE
, FALSE
, &ModInfo
))
151 SetLastError(0xDEADBEEF);
152 Len
= GetDeviceDriverFileNameA(ModInfo
.ImageBase
, FileName
, 255);
153 ok(Len
== 0, "Len: %lu\n", Len
);
154 ok(GetLastError() == ERROR_INVALID_HANDLE
, "Error: %lx\n", GetLastError());
158 skip("Couldn't find info about psapi.dll\n");
162 START_TEST(GetDeviceDriverBaseName
)
166 TEST_MODULE_INFO ModInfo
;
168 SetLastError(0xDEADBEEF);
169 Len
= GetDeviceDriverBaseNameA(0, FileName
, 255);
170 ok(Len
== 0, "Len: %lu\n", Len
);
171 ok(GetLastError() == ERROR_INVALID_HANDLE
, "Error: %lx\n", GetLastError());
173 if (IntGetModuleInformation("ntdll.dll", FALSE
, TRUE
, TRUE
, &ModInfo
))
175 SetLastError(0xDEADBEEF);
176 Len
= GetDeviceDriverBaseNameA(ModInfo
.ImageBase
, FileName
, 255);
177 ok(Len
== ModInfo
.Len
, "Len: %lu\n", Len
);
178 ok(GetLastError() == 0xDEADBEEF, "Error: %lx\n", GetLastError());
179 ok(lstrcmpiA(ModInfo
.Path
, FileName
) == 0, "File name: %s\n", FileName
);
181 /* Test with too small buffer */
182 SetLastError(0xDEADBEEF);
184 ModInfo
.Path
[ModInfo
.Len
] = 0;
185 FileName
[ModInfo
.Len
] = 0;
186 Len
= GetDeviceDriverBaseNameA(ModInfo
.ImageBase
, FileName
, ModInfo
.Len
);
187 ok(Len
== ModInfo
.Len
, "Len: %lu\n", Len
);
188 ok(GetLastError() == 0xDEADBEEF, "Error: %lx\n", GetLastError());
189 ok(lstrcmpiA(ModInfo
.Path
, FileName
) == 0, "File name: %s\n", FileName
);
193 skip("Couldn't find info about ntdll.dll\n");
196 if (IntGetModuleInformation("msvcrt.dll", FALSE
, TRUE
, TRUE
, &ModInfo
))
198 SetLastError(0xDEADBEEF);
199 Len
= GetDeviceDriverBaseNameA(ModInfo
.ImageBase
, FileName
, 255);
200 ok(Len
== 0, "Len: %lu\n", Len
);
201 ok(GetLastError() == ERROR_INVALID_HANDLE
, "Error: %lx\n", GetLastError());
205 skip("Couldn't find info about msvcrt.dll\n");
208 if (IntGetModuleInformation("psapi.dll", FALSE
, TRUE
, TRUE
, &ModInfo
))
210 SetLastError(0xDEADBEEF);
211 Len
= GetDeviceDriverBaseNameA(ModInfo
.ImageBase
, FileName
, 255);
212 ok(Len
== 0, "Len: %lu\n", Len
);
213 ok(GetLastError() == ERROR_INVALID_HANDLE
, "Error: %lx\n", GetLastError());
217 skip("Couldn't find info about psapi.dll\n");