Commit 28e6fe37 authored by Fabian Maurer's avatar Fabian Maurer Committed by Alexandre Julliard

kernel32: Stub FindFirstStreamW/FindNextStreamW.

parent 63743c39
@ stdcall AreFileApisANSI() kernel32.AreFileApisANSI @ stdcall AreFileApisANSI() kernel32.AreFileApisANSI
@ stub FindFirstFileNameW @ stub FindFirstFileNameW
@ stub FindFirstStreamW @ stdcall FindFirstStreamW(wstr long ptr long) kernel32.FindFirstStreamW
@ stub FindNextFileNameW @ stub FindNextFileNameW
@ stub FindNextStreamW @ stdcall FindNextStreamW(long ptr) kernel32.FindNextStreamW
@ stdcall GetTempFileNameA(str str long ptr) kernel32.GetTempFileNameA @ stdcall GetTempFileNameA(str str long ptr) kernel32.GetTempFileNameA
@ stdcall GetTempPathA(long ptr) kernel32.GetTempPathA @ stdcall GetTempPathA(long ptr) kernel32.GetTempPathA
@ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationA @ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationA
......
...@@ -2363,6 +2363,28 @@ BOOL WINAPI FindNextFileA( HANDLE handle, WIN32_FIND_DATAA *data ) ...@@ -2363,6 +2363,28 @@ BOOL WINAPI FindNextFileA( HANDLE handle, WIN32_FIND_DATAA *data )
return TRUE; return TRUE;
} }
/**************************************************************************
* FindFirstStreamW (KERNEL32.@)
*/
HANDLE WINAPI FindFirstStreamW(LPCWSTR filename, STREAM_INFO_LEVELS infolevel, void *data, DWORD flags)
{
FIXME("(%s, %d, %p, %x): stub!\n", debugstr_w(filename), infolevel, data, flags);
SetLastError(ERROR_HANDLE_EOF);
return INVALID_HANDLE_VALUE;
}
/**************************************************************************
* FindNextStreamW (KERNEL32.@)
*/
BOOL WINAPI FindNextStreamW(HANDLE handle, void *data)
{
FIXME("(%p, %p): stub!\n", handle, data);
SetLastError(ERROR_HANDLE_EOF);
return FALSE;
}
/************************************************************************** /**************************************************************************
* GetFileAttributesW (KERNEL32.@) * GetFileAttributesW (KERNEL32.@)
......
...@@ -488,7 +488,7 @@ ...@@ -488,7 +488,7 @@
# @ stub FindFirstFileTransactedW # @ stub FindFirstFileTransactedW
@ stdcall FindFirstFileW(wstr ptr) @ stdcall FindFirstFileW(wstr ptr)
# @ stub FindFirstStreamTransactedW # @ stub FindFirstStreamTransactedW
# @ stub FindFirstStreamW @ stdcall FindFirstStreamW(wstr long ptr long)
@ stdcall FindFirstVolumeA(ptr long) @ stdcall FindFirstVolumeA(ptr long)
@ stdcall FindFirstVolumeMountPointA(str ptr long) @ stdcall FindFirstVolumeMountPointA(str ptr long)
@ stdcall FindFirstVolumeMountPointW(wstr ptr long) @ stdcall FindFirstVolumeMountPointW(wstr ptr long)
...@@ -497,7 +497,7 @@ ...@@ -497,7 +497,7 @@
@ stdcall FindNextFileA(long ptr) @ stdcall FindNextFileA(long ptr)
# @ stub FindNextFileNameW # @ stub FindNextFileNameW
@ stdcall FindNextFileW(long ptr) @ stdcall FindNextFileW(long ptr)
# @ stub FindNextStreamW @ stdcall FindNextStreamW(long ptr)
@ stdcall FindNextVolumeA(long ptr long) @ stdcall FindNextVolumeA(long ptr long)
@ stub FindNextVolumeMountPointA @ stub FindNextVolumeMountPointA
@ stub FindNextVolumeMountPointW @ stub FindNextVolumeMountPointW
......
...@@ -62,6 +62,7 @@ static BOOL (WINAPI *pGetQueuedCompletionStatusEx)(HANDLE, OVERLAPPED_ENTRY*, UL ...@@ -62,6 +62,7 @@ static BOOL (WINAPI *pGetQueuedCompletionStatusEx)(HANDLE, OVERLAPPED_ENTRY*, UL
static void (WINAPI *pRtlInitAnsiString)(PANSI_STRING,PCSZ); static void (WINAPI *pRtlInitAnsiString)(PANSI_STRING,PCSZ);
static void (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING); static void (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING);
static BOOL (WINAPI *pSetFileCompletionNotificationModes)(HANDLE, UCHAR); static BOOL (WINAPI *pSetFileCompletionNotificationModes)(HANDLE, UCHAR);
static HANDLE (WINAPI *pFindFirstStreamW)(LPCWSTR filename, STREAM_INFO_LEVELS infolevel, void *data, DWORD flags);
static char filename[MAX_PATH]; static char filename[MAX_PATH];
static const char sillytext[] = static const char sillytext[] =
...@@ -111,6 +112,7 @@ static void InitFunctionPointers(void) ...@@ -111,6 +112,7 @@ static void InitFunctionPointers(void)
pSetFileInformationByHandle = (void *) GetProcAddress(hkernel32, "SetFileInformationByHandle"); pSetFileInformationByHandle = (void *) GetProcAddress(hkernel32, "SetFileInformationByHandle");
pGetQueuedCompletionStatusEx = (void *) GetProcAddress(hkernel32, "GetQueuedCompletionStatusEx"); pGetQueuedCompletionStatusEx = (void *) GetProcAddress(hkernel32, "GetQueuedCompletionStatusEx");
pSetFileCompletionNotificationModes = (void *)GetProcAddress(hkernel32, "SetFileCompletionNotificationModes"); pSetFileCompletionNotificationModes = (void *)GetProcAddress(hkernel32, "SetFileCompletionNotificationModes");
pFindFirstStreamW = (void *)GetProcAddress(hkernel32, "FindFirstStreamW");
} }
static void test__hread( void ) static void test__hread( void )
...@@ -5314,6 +5316,26 @@ static void test_file_readonly_access(void) ...@@ -5314,6 +5316,26 @@ static void test_file_readonly_access(void)
ok(ret, "DeleteFileA: error %d\n", GetLastError()); ok(ret, "DeleteFileA: error %d\n", GetLastError());
} }
static void test_find_file_stream(void)
{
WCHAR path[] = {'C',':','\\','w','i','n','d','o','w','s',0};
HANDLE handle;
int error;
WIN32_FIND_STREAM_DATA data;
if (!pFindFirstStreamW)
{
win_skip("FindFirstStreamW is missing\n");
return;
}
SetLastError(0xdeadbeef);
handle = pFindFirstStreamW(path, FindStreamInfoStandard, &data, 0);
error = GetLastError();
ok(handle == INVALID_HANDLE_VALUE, "Expected INVALID_HANDLE_VALUE, got %p\n", handle);
ok(error == ERROR_HANDLE_EOF, "Expected ERROR_HANDLE_EOF, got %d\n", error);
}
START_TEST(file) START_TEST(file)
{ {
char temp_path[MAX_PATH]; char temp_path[MAX_PATH];
...@@ -5385,4 +5407,5 @@ START_TEST(file) ...@@ -5385,4 +5407,5 @@ START_TEST(file)
test_post_completion(); test_post_completion();
test_overlapped_read(); test_overlapped_read();
test_file_readonly_access(); test_file_readonly_access();
test_find_file_stream();
} }
...@@ -360,7 +360,7 @@ ...@@ -360,7 +360,7 @@
# @ stub FindFirstFileNameW # @ stub FindFirstFileNameW
@ stdcall FindFirstFileW(wstr ptr) kernel32.FindFirstFileW @ stdcall FindFirstFileW(wstr ptr) kernel32.FindFirstFileW
@ stdcall FindFirstFreeAce(ptr ptr) advapi32.FindFirstFreeAce @ stdcall FindFirstFreeAce(ptr ptr) advapi32.FindFirstFreeAce
# @ stub FindFirstStreamW @ stdcall FindFirstStreamW(wstr long ptr long) kernel32.FindFirstStreamW
@ stdcall FindFirstVolumeW(ptr long) kernel32.FindFirstVolumeW @ stdcall FindFirstVolumeW(ptr long) kernel32.FindFirstVolumeW
@ stub FindNLSString @ stub FindNLSString
@ stdcall FindNLSStringEx(wstr long wstr long wstr long ptr ptr ptr long) kernel32.FindNLSStringEx @ stdcall FindNLSStringEx(wstr long wstr long wstr long ptr ptr ptr long) kernel32.FindNLSStringEx
...@@ -368,7 +368,7 @@ ...@@ -368,7 +368,7 @@
@ stdcall FindNextFileA(long ptr) kernel32.FindNextFileA @ stdcall FindNextFileA(long ptr) kernel32.FindNextFileA
# @ stub FindNextFileNameW # @ stub FindNextFileNameW
@ stdcall FindNextFileW(long ptr) kernel32.FindNextFileW @ stdcall FindNextFileW(long ptr) kernel32.FindNextFileW
# @ stub FindNextStreamW @ stdcall FindNextStreamW(long ptr) kernel32.FindNextStreamW
@ stdcall FindNextVolumeW(long ptr long) kernel32.FindNextVolumeW @ stdcall FindNextVolumeW(long ptr long) kernel32.FindNextVolumeW
# @ stub FindPackagesByPackageFamily # @ stub FindPackagesByPackageFamily
@ stdcall FindResourceExW(long wstr wstr long) kernel32.FindResourceExW @ stdcall FindResourceExW(long wstr wstr long) kernel32.FindResourceExW
......
...@@ -1717,6 +1717,17 @@ typedef struct _UMS_SCHEDULER_STARTUP_INFO ...@@ -1717,6 +1717,17 @@ typedef struct _UMS_SCHEDULER_STARTUP_INFO
typedef enum _RTL_UMS_SCHEDULER_REASON UMS_SCHEDULER_REASON; typedef enum _RTL_UMS_SCHEDULER_REASON UMS_SCHEDULER_REASON;
typedef enum _RTL_UMS_THREAD_INFO_CLASS UMS_THREAD_INFO_CLASS, *PUMS_THREAD_INFO_CLASS; typedef enum _RTL_UMS_THREAD_INFO_CLASS UMS_THREAD_INFO_CLASS, *PUMS_THREAD_INFO_CLASS;
typedef enum _STREAM_INFO_LEVELS
{
FindStreamInfoStandard,
FindStreamInfoMaxInfoLevel
} STREAM_INFO_LEVELS;
typedef struct _WIN32_FIND_STREAM_DATA {
LARGE_INTEGER StreamSize;
WCHAR cStreamName[MAX_PATH + 36];
} WIN32_FIND_STREAM_DATA,*PWIN32_FIND_STREAM_DATA;
WINBASEAPI BOOL WINAPI ActivateActCtx(HANDLE,ULONG_PTR *); WINBASEAPI BOOL WINAPI ActivateActCtx(HANDLE,ULONG_PTR *);
WINADVAPI BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID); WINADVAPI BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
WINADVAPI BOOL WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID); WINADVAPI BOOL WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
...@@ -2002,10 +2013,12 @@ WINBASEAPI HANDLE WINAPI FindFirstFileExA(LPCSTR,FINDEX_INFO_LEVELS,LPVOID, ...@@ -2002,10 +2013,12 @@ WINBASEAPI HANDLE WINAPI FindFirstFileExA(LPCSTR,FINDEX_INFO_LEVELS,LPVOID,
WINBASEAPI HANDLE WINAPI FindFirstFileExW(LPCWSTR,FINDEX_INFO_LEVELS,LPVOID,FINDEX_SEARCH_OPS,LPVOID,DWORD); WINBASEAPI HANDLE WINAPI FindFirstFileExW(LPCWSTR,FINDEX_INFO_LEVELS,LPVOID,FINDEX_SEARCH_OPS,LPVOID,DWORD);
#define FindFirstFileEx WINELIB_NAME_AW(FindFirstFileEx) #define FindFirstFileEx WINELIB_NAME_AW(FindFirstFileEx)
WINADVAPI BOOL WINAPI FindFirstFreeAce(PACL,LPVOID*); WINADVAPI BOOL WINAPI FindFirstFreeAce(PACL,LPVOID*);
WINBASEAPI HANDLE WINAPI FindFirstStreamW(LPCWSTR,STREAM_INFO_LEVELS,void*,DWORD);
WINBASEAPI BOOL WINAPI FindNextChangeNotification(HANDLE); WINBASEAPI BOOL WINAPI FindNextChangeNotification(HANDLE);
WINBASEAPI BOOL WINAPI FindNextFileA(HANDLE,LPWIN32_FIND_DATAA); WINBASEAPI BOOL WINAPI FindNextFileA(HANDLE,LPWIN32_FIND_DATAA);
WINBASEAPI BOOL WINAPI FindNextFileW(HANDLE,LPWIN32_FIND_DATAW); WINBASEAPI BOOL WINAPI FindNextFileW(HANDLE,LPWIN32_FIND_DATAW);
#define FindNextFile WINELIB_NAME_AW(FindNextFile) #define FindNextFile WINELIB_NAME_AW(FindNextFile)
WINBASEAPI BOOL WINAPI FindNextStreamW(HANDLE,void*);
WINBASEAPI BOOL WINAPI FindCloseChangeNotification(HANDLE); WINBASEAPI BOOL WINAPI FindCloseChangeNotification(HANDLE);
WINBASEAPI HRSRC WINAPI FindResourceA(HMODULE,LPCSTR,LPCSTR); WINBASEAPI HRSRC WINAPI FindResourceA(HMODULE,LPCSTR,LPCSTR);
WINBASEAPI HRSRC WINAPI FindResourceW(HMODULE,LPCWSTR,LPCWSTR); WINBASEAPI HRSRC WINAPI FindResourceW(HMODULE,LPCWSTR,LPCWSTR);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment