mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 18:52:57 +00:00
Fixed WIN32_FIND_DATA[A/W] structs and resulting bugs
svn path=/trunk/; revision=1060
This commit is contained in:
parent
67200bd4f9
commit
b820741431
3 changed files with 255 additions and 237 deletions
|
@ -35,6 +35,11 @@
|
||||||
|
|
||||||
typedef union _LARGE_INTEGER
|
typedef union _LARGE_INTEGER
|
||||||
{
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
DWORD LowPart;
|
||||||
|
LONG HighPart;
|
||||||
|
};
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
DWORD LowPart;
|
DWORD LowPart;
|
||||||
|
@ -45,6 +50,11 @@ typedef union _LARGE_INTEGER
|
||||||
|
|
||||||
typedef union _ULARGE_INTEGER
|
typedef union _ULARGE_INTEGER
|
||||||
{
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
DWORD LowPart;
|
||||||
|
DWORD HighPart;
|
||||||
|
};
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
DWORD LowPart;
|
DWORD LowPart;
|
||||||
|
@ -55,28 +65,25 @@ typedef union _ULARGE_INTEGER
|
||||||
|
|
||||||
#include <security.h>
|
#include <security.h>
|
||||||
|
|
||||||
typedef struct _LIST_ENTRY {
|
typedef struct _LIST_ENTRY {
|
||||||
struct _LIST_ENTRY *Flink;
|
struct _LIST_ENTRY *Flink;
|
||||||
struct _LIST_ENTRY *Blink;
|
struct _LIST_ENTRY *Blink;
|
||||||
} LIST_ENTRY, *PLIST_ENTRY;
|
} LIST_ENTRY, *PLIST_ENTRY;
|
||||||
|
|
||||||
|
typedef struct _PARTITION_INFORMATION {
|
||||||
|
BYTE PartitionType;
|
||||||
|
BOOLEAN BootIndicator;
|
||||||
|
BOOLEAN RecognizedPartition;
|
||||||
|
BOOLEAN RewritePartition;
|
||||||
|
LARGE_INTEGER StartingOffset;
|
||||||
|
LARGE_INTEGER PartitionLength;
|
||||||
|
LARGE_INTEGER HiddenSectors;
|
||||||
|
} PARTITION_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _SINGLE_LIST_ENTRY {
|
||||||
|
struct _SINGLE_LIST_ENTRY *Next;
|
||||||
|
} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
|
||||||
|
|
||||||
typedef struct _PARTITION_INFORMATION {
|
|
||||||
BYTE PartitionType;
|
|
||||||
BOOLEAN BootIndicator;
|
|
||||||
BOOLEAN RecognizedPartition;
|
|
||||||
BOOLEAN RewritePartition;
|
|
||||||
LARGE_INTEGER StartingOffset;
|
|
||||||
LARGE_INTEGER PartitionLength;
|
|
||||||
LARGE_INTEGER HiddenSectors;
|
|
||||||
} PARTITION_INFORMATION ;
|
|
||||||
|
|
||||||
typedef struct _SINGLE_LIST_ENTRY {
|
|
||||||
struct _SINGLE_LIST_ENTRY *Next;
|
|
||||||
} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _CRITICAL_SECTION_DEBUG {
|
typedef struct _CRITICAL_SECTION_DEBUG {
|
||||||
WORD Type;
|
WORD Type;
|
||||||
WORD CreatorBackTraceIndex;
|
WORD CreatorBackTraceIndex;
|
||||||
|
@ -97,18 +104,18 @@ typedef struct _CRITICAL_SECTION {
|
||||||
DWORD Reserved;
|
DWORD Reserved;
|
||||||
} CRITICAL_SECTION, *PCRITICAL_SECTION, *LPCRITICAL_SECTION;
|
} CRITICAL_SECTION, *PCRITICAL_SECTION, *LPCRITICAL_SECTION;
|
||||||
|
|
||||||
typedef struct _GENERIC_MAPPING {
|
typedef struct _GENERIC_MAPPING {
|
||||||
ACCESS_MASK GenericRead;
|
ACCESS_MASK GenericRead;
|
||||||
ACCESS_MASK GenericWrite;
|
ACCESS_MASK GenericWrite;
|
||||||
ACCESS_MASK GenericExecute;
|
ACCESS_MASK GenericExecute;
|
||||||
ACCESS_MASK GenericAll;
|
ACCESS_MASK GenericAll;
|
||||||
} GENERIC_MAPPING, *PGENERIC_MAPPING;
|
} GENERIC_MAPPING, *PGENERIC_MAPPING;
|
||||||
|
|
||||||
typedef struct _PRIVILEGE_SET {
|
typedef struct _PRIVILEGE_SET {
|
||||||
DWORD PrivilegeCount;
|
DWORD PrivilegeCount;
|
||||||
DWORD Control;
|
DWORD Control;
|
||||||
LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
|
LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
|
||||||
} PRIVILEGE_SET, *PPRIVILEGE_SET, *LPPRIVILEGE_SET;
|
} PRIVILEGE_SET, *PPRIVILEGE_SET, *LPPRIVILEGE_SET;
|
||||||
|
|
||||||
#ifdef __i386__
|
#ifdef __i386__
|
||||||
|
|
||||||
|
@ -150,7 +157,7 @@ typedef struct _CONTEXT {
|
||||||
|
|
||||||
DWORD Ebp;
|
DWORD Ebp;
|
||||||
DWORD Eip;
|
DWORD Eip;
|
||||||
DWORD SegCs;
|
DWORD SegCs;
|
||||||
DWORD EFlags;
|
DWORD EFlags;
|
||||||
DWORD Esp;
|
DWORD Esp;
|
||||||
DWORD SegSs;
|
DWORD SegSs;
|
||||||
|
@ -4137,7 +4144,7 @@ typedef struct _textrange {
|
||||||
LPSTR lpstrText;
|
LPSTR lpstrText;
|
||||||
} TEXTRANGE;
|
} TEXTRANGE;
|
||||||
|
|
||||||
typedef struct tagTOGGLEKEYS {
|
typedef struct tagTOGGLEKEYS {
|
||||||
DWORD cbSize;
|
DWORD cbSize;
|
||||||
DWORD dwFlags;
|
DWORD dwFlags;
|
||||||
} TOGGLEKEYS;
|
} TOGGLEKEYS;
|
||||||
|
@ -4148,17 +4155,17 @@ typedef struct _TOKEN_CONTROL {
|
||||||
LUID ModifiedId;
|
LUID ModifiedId;
|
||||||
TOKEN_SOURCE TokenSource;
|
TOKEN_SOURCE TokenSource;
|
||||||
} TOKEN_CONTROL, *PTOKEN_CONTROL ;
|
} TOKEN_CONTROL, *PTOKEN_CONTROL ;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT cbSize;
|
UINT cbSize;
|
||||||
UINT uFlags;
|
UINT uFlags;
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
UINT uId;
|
UINT uId;
|
||||||
RECT rect;
|
RECT rect;
|
||||||
HINSTANCE hinst;
|
HINSTANCE hinst;
|
||||||
LPTSTR lpszText;
|
LPTSTR lpszText;
|
||||||
} TOOLINFO, *PTOOLINFO, *LPTOOLINFO;
|
} TOOLINFO, *PTOOLINFO, *LPTOOLINFO;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
NMHDR hdr;
|
NMHDR hdr;
|
||||||
LPTSTR lpszText;
|
LPTSTR lpszText;
|
||||||
|
@ -4240,85 +4247,108 @@ typedef struct tagUSEROBJECTFLAGS {
|
||||||
WINBOOL fReserved;
|
WINBOOL fReserved;
|
||||||
DWORD dwFlags;
|
DWORD dwFlags;
|
||||||
} USEROBJECTFLAGS;
|
} USEROBJECTFLAGS;
|
||||||
|
|
||||||
typedef struct _VERIFY_INFORMATION {
|
typedef struct _VERIFY_INFORMATION {
|
||||||
LARGE_INTEGER StartingOffset;
|
LARGE_INTEGER StartingOffset;
|
||||||
DWORD Length;
|
DWORD Length;
|
||||||
} VERIFY_INFORMATION ;
|
} VERIFY_INFORMATION ;
|
||||||
|
|
||||||
typedef struct _VS_FIXEDFILEINFO {
|
typedef struct _VS_FIXEDFILEINFO {
|
||||||
DWORD dwSignature;
|
DWORD dwSignature;
|
||||||
DWORD dwStrucVersion;
|
DWORD dwStrucVersion;
|
||||||
DWORD dwFileVersionMS;
|
DWORD dwFileVersionMS;
|
||||||
DWORD dwFileVersionLS;
|
DWORD dwFileVersionLS;
|
||||||
DWORD dwProductVersionMS;
|
DWORD dwProductVersionMS;
|
||||||
DWORD dwProductVersionLS;
|
DWORD dwProductVersionLS;
|
||||||
DWORD dwFileFlagsMask;
|
DWORD dwFileFlagsMask;
|
||||||
DWORD dwFileFlags;
|
DWORD dwFileFlags;
|
||||||
DWORD dwFileOS;
|
DWORD dwFileOS;
|
||||||
DWORD dwFileType;
|
DWORD dwFileType;
|
||||||
DWORD dwFileSubtype;
|
DWORD dwFileSubtype;
|
||||||
DWORD dwFileDateMS;
|
DWORD dwFileDateMS;
|
||||||
DWORD dwFileDateLS;
|
DWORD dwFileDateLS;
|
||||||
} VS_FIXEDFILEINFO;
|
} VS_FIXEDFILEINFO;
|
||||||
|
|
||||||
typedef struct _WIN32_FIND_DATA {
|
typedef struct _WIN32_FIND_DATAA {
|
||||||
DWORD dwFileAttributes;
|
DWORD dwFileAttributes;
|
||||||
FILETIME ftCreationTime;
|
FILETIME ftCreationTime;
|
||||||
FILETIME ftLastAccessTime;
|
FILETIME ftLastAccessTime;
|
||||||
FILETIME ftLastWriteTime;
|
FILETIME ftLastWriteTime;
|
||||||
DWORD nFileSizeHigh;
|
DWORD nFileSizeHigh;
|
||||||
DWORD nFileSizeLow;
|
DWORD nFileSizeLow;
|
||||||
DWORD dwReserved0;
|
DWORD dwReserved0;
|
||||||
DWORD dwReserved1;
|
DWORD dwReserved1;
|
||||||
TCHAR cFileName[ MAX_PATH ];
|
CHAR cFileName[ MAX_PATH ];
|
||||||
TCHAR cAlternateFileName[ 14 ];
|
CHAR cAlternateFileName[ 14 ];
|
||||||
} WIN32_FIND_DATA, *LPWIN32_FIND_DATA, *PWIN32_FIND_DATA;
|
} WIN32_FIND_DATAA, *LPWIN32_FIND_DATAA, *PWIN32_FIND_DATAA;
|
||||||
|
|
||||||
typedef struct _WIN32_STREAM_ID {
|
typedef struct _WIN32_FIND_DATAW {
|
||||||
DWORD dwStreamId;
|
DWORD dwFileAttributes;
|
||||||
DWORD dwStreamAttributes;
|
FILETIME ftCreationTime;
|
||||||
LARGE_INTEGER Size;
|
FILETIME ftLastAccessTime;
|
||||||
DWORD dwStreamNameSize;
|
FILETIME ftLastWriteTime;
|
||||||
WCHAR *cStreamName ;
|
DWORD nFileSizeHigh;
|
||||||
|
DWORD nFileSizeLow;
|
||||||
|
DWORD dwReserved0;
|
||||||
|
DWORD dwReserved1;
|
||||||
|
WCHAR cFileName[ MAX_PATH ];
|
||||||
|
WCHAR cAlternateFileName[ 14 ];
|
||||||
|
} WIN32_FIND_DATAW, *LPWIN32_FIND_DATAW, *PWIN32_FIND_DATAW;
|
||||||
|
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define WIN32_FIND_DATA WIN32_FIND_DATAW
|
||||||
|
#define PWIN32_FIND_DATA PWIN32_FIND_DATAW
|
||||||
|
#define LPWIN32_FIND_DATA LPWIN32_FIND_DATAW
|
||||||
|
#else
|
||||||
|
#define WIN32_FIND_DATA WIN32_FIND_DATAA
|
||||||
|
#define PWIN32_FIND_DATA PWIN32_FIND_DATAA
|
||||||
|
#define LPWIN32_FIND_DATA LPWIN32_FIND_DATAA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct _WIN32_STREAM_ID {
|
||||||
|
DWORD dwStreamId;
|
||||||
|
DWORD dwStreamAttributes;
|
||||||
|
LARGE_INTEGER Size;
|
||||||
|
DWORD dwStreamNameSize;
|
||||||
|
WCHAR *cStreamName;
|
||||||
} WIN32_STREAM_ID;
|
} WIN32_STREAM_ID;
|
||||||
|
|
||||||
typedef struct _WINDOWPLACEMENT {
|
typedef struct _WINDOWPLACEMENT {
|
||||||
UINT length;
|
UINT length;
|
||||||
UINT flags;
|
UINT flags;
|
||||||
UINT showCmd;
|
UINT showCmd;
|
||||||
POINT ptMinPosition;
|
POINT ptMinPosition;
|
||||||
POINT ptMaxPosition;
|
POINT ptMaxPosition;
|
||||||
RECT rcNormalPosition;
|
RECT rcNormalPosition;
|
||||||
} WINDOWPLACEMENT;
|
} WINDOWPLACEMENT;
|
||||||
|
|
||||||
typedef struct _WNDCLASS {
|
typedef struct _WNDCLASS {
|
||||||
UINT style;
|
UINT style;
|
||||||
WNDPROC lpfnWndProc;
|
WNDPROC lpfnWndProc;
|
||||||
int cbClsExtra;
|
int cbClsExtra;
|
||||||
int cbWndExtra;
|
int cbWndExtra;
|
||||||
HANDLE hInstance;
|
HANDLE hInstance;
|
||||||
HICON hIcon;
|
HICON hIcon;
|
||||||
HCURSOR hCursor;
|
HCURSOR hCursor;
|
||||||
HBRUSH hbrBackground;
|
HBRUSH hbrBackground;
|
||||||
LPCTSTR lpszMenuName;
|
LPCTSTR lpszMenuName;
|
||||||
LPCTSTR lpszClassName;
|
LPCTSTR lpszClassName;
|
||||||
} WNDCLASS, *LPWNDCLASS;
|
} WNDCLASS, *LPWNDCLASS;
|
||||||
|
|
||||||
typedef struct _WNDCLASSEX {
|
typedef struct _WNDCLASSEX {
|
||||||
UINT cbSize;
|
UINT cbSize;
|
||||||
UINT style;
|
UINT style;
|
||||||
WNDPROC lpfnWndProc;
|
WNDPROC lpfnWndProc;
|
||||||
int cbClsExtra;
|
int cbClsExtra;
|
||||||
int cbWndExtra;
|
int cbWndExtra;
|
||||||
HANDLE hInstance;
|
HANDLE hInstance;
|
||||||
HICON hIcon;
|
HICON hIcon;
|
||||||
HCURSOR hCursor;
|
HCURSOR hCursor;
|
||||||
HBRUSH hbrBackground;
|
HBRUSH hbrBackground;
|
||||||
LPCTSTR lpszMenuName;
|
LPCTSTR lpszMenuName;
|
||||||
LPCTSTR lpszClassName;
|
LPCTSTR lpszClassName;
|
||||||
HICON hIconSm;
|
HICON hIconSm;
|
||||||
} WNDCLASSEX, *LPWNDCLASSEX;
|
} WNDCLASSEX, *LPWNDCLASSEX;
|
||||||
|
|
||||||
typedef struct _CONNECTDLGSTRUCT {
|
typedef struct _CONNECTDLGSTRUCT {
|
||||||
DWORD cbStructure;
|
DWORD cbStructure;
|
||||||
|
@ -4372,7 +4402,7 @@ typedef VOID CALLBACK (*LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD,
|
||||||
/*
|
/*
|
||||||
Structures for the extensions to OpenGL
|
Structures for the extensions to OpenGL
|
||||||
*/
|
*/
|
||||||
typedef struct _POINTFLOAT
|
typedef struct _POINTFLOAT
|
||||||
{
|
{
|
||||||
FLOAT x;
|
FLOAT x;
|
||||||
FLOAT y;
|
FLOAT y;
|
||||||
|
@ -4389,31 +4419,31 @@ typedef struct _GLYPHMETRICSFLOAT
|
||||||
|
|
||||||
typedef struct tagLAYERPLANEDESCRIPTOR
|
typedef struct tagLAYERPLANEDESCRIPTOR
|
||||||
{
|
{
|
||||||
WORD nSize;
|
WORD nSize;
|
||||||
WORD nVersion;
|
WORD nVersion;
|
||||||
DWORD dwFlags;
|
DWORD dwFlags;
|
||||||
BYTE iPixelType;
|
BYTE iPixelType;
|
||||||
BYTE cColorBits;
|
BYTE cColorBits;
|
||||||
BYTE cRedBits;
|
BYTE cRedBits;
|
||||||
BYTE cRedShift;
|
BYTE cRedShift;
|
||||||
BYTE cGreenBits;
|
BYTE cGreenBits;
|
||||||
BYTE cGreenShift;
|
BYTE cGreenShift;
|
||||||
BYTE cBlueBits;
|
BYTE cBlueBits;
|
||||||
BYTE cBlueShift;
|
BYTE cBlueShift;
|
||||||
BYTE cAlphaBits;
|
BYTE cAlphaBits;
|
||||||
BYTE cAlphaShift;
|
BYTE cAlphaShift;
|
||||||
BYTE cAccumBits;
|
BYTE cAccumBits;
|
||||||
BYTE cAccumRedBits;
|
BYTE cAccumRedBits;
|
||||||
BYTE cAccumGreenBits;
|
BYTE cAccumGreenBits;
|
||||||
BYTE cAccumBlueBits;
|
BYTE cAccumBlueBits;
|
||||||
BYTE cAccumAlphaBits;
|
BYTE cAccumAlphaBits;
|
||||||
BYTE cDepthBits;
|
BYTE cDepthBits;
|
||||||
BYTE cStencilBits;
|
BYTE cStencilBits;
|
||||||
BYTE cAuxBuffers;
|
BYTE cAuxBuffers;
|
||||||
BYTE iLayerPlane;
|
BYTE iLayerPlane;
|
||||||
BYTE bReserved;
|
BYTE bReserved;
|
||||||
COLORREF crTransparent;
|
COLORREF crTransparent;
|
||||||
} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
|
} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
|
||||||
|
|
||||||
typedef struct tagPIXELFORMATDESCRIPTOR
|
typedef struct tagPIXELFORMATDESCRIPTOR
|
||||||
{
|
{
|
||||||
|
|
|
@ -2107,14 +2107,14 @@ HANDLE
|
||||||
STDCALL
|
STDCALL
|
||||||
FindFirstFileW(
|
FindFirstFileW(
|
||||||
LPCWSTR lpFileName,
|
LPCWSTR lpFileName,
|
||||||
LPWIN32_FIND_DATA lpFindFileData
|
LPWIN32_FIND_DATAW lpFindFileData
|
||||||
);
|
);
|
||||||
|
|
||||||
WINBOOL
|
WINBOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
FindNextFileW(
|
FindNextFileW(
|
||||||
HANDLE hFindFile,
|
HANDLE hFindFile,
|
||||||
LPWIN32_FIND_DATA lpFindFileData
|
LPWIN32_FIND_DATAW lpFindFileData
|
||||||
);
|
);
|
||||||
|
|
||||||
WINBOOL
|
WINBOOL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: find.c,v 1.24 2000/03/15 12:25:47 ekohl Exp $
|
/* $Id: find.c,v 1.25 2000/03/15 23:13:29 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -14,12 +14,11 @@
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <ntdll/rtl.h>
|
#include <ntdll/rtl.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <wchar.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <kernel32/kernel32.h>
|
#include <kernel32/kernel32.h>
|
||||||
|
|
||||||
|
|
||||||
/* TYPES ********************************************************************/
|
/* TYPES ********************************************************************/
|
||||||
|
|
||||||
typedef struct _KERNEL32_FIND_FILE_DATA
|
typedef struct _KERNEL32_FIND_FILE_DATA
|
||||||
|
@ -30,61 +29,14 @@ typedef struct _KERNEL32_FIND_FILE_DATA
|
||||||
UNICODE_STRING PatternStr;
|
UNICODE_STRING PatternStr;
|
||||||
} KERNEL32_FIND_FILE_DATA, *PKERNEL32_FIND_FILE_DATA;
|
} KERNEL32_FIND_FILE_DATA, *PKERNEL32_FIND_FILE_DATA;
|
||||||
|
|
||||||
typedef struct _WIN32_FIND_DATA_UNICODE {
|
|
||||||
DWORD dwFileAttributes;
|
|
||||||
FILETIME ftCreationTime;
|
|
||||||
FILETIME ftLastAccessTime;
|
|
||||||
FILETIME ftLastWriteTime;
|
|
||||||
DWORD nFileSizeHigh;
|
|
||||||
DWORD nFileSizeLow;
|
|
||||||
DWORD dwReserved0;
|
|
||||||
DWORD dwReserved1;
|
|
||||||
WCHAR cFileName[ MAX_PATH ];
|
|
||||||
WCHAR cAlternateFileName[ 14 ];
|
|
||||||
} WIN32_FIND_DATA_UNICODE, *PWIN32_FIND_DATA_UNICODE;
|
|
||||||
|
|
||||||
typedef struct _WIN32_FIND_DATA_ASCII {
|
/* FUNCTIONS ****************************************************************/
|
||||||
DWORD dwFileAttributes;
|
|
||||||
FILETIME ftCreationTime;
|
|
||||||
FILETIME ftLastAccessTime;
|
|
||||||
FILETIME ftLastWriteTime;
|
|
||||||
DWORD nFileSizeHigh;
|
|
||||||
DWORD nFileSizeLow;
|
|
||||||
DWORD dwReserved0;
|
|
||||||
DWORD dwReserved1;
|
|
||||||
CHAR cFileName[ MAX_PATH ];
|
|
||||||
CHAR cAlternateFileName[ 14 ];
|
|
||||||
} WIN32_FIND_DATA_ASCII, *PWIN32_FIND_DATA_ASCII;
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
FileDataToWin32Data (
|
|
||||||
LPWIN32_FIND_DATA lpFindFileData,
|
|
||||||
PKERNEL32_FIND_FILE_DATA IData
|
|
||||||
)
|
|
||||||
{
|
|
||||||
lpFindFileData->dwFileAttributes = IData->FileInfo.FileAttributes;
|
|
||||||
memcpy (&lpFindFileData->ftCreationTime,
|
|
||||||
&IData->FileInfo.CreationTime,
|
|
||||||
sizeof(FILETIME));
|
|
||||||
memcpy (&lpFindFileData->ftLastAccessTime,
|
|
||||||
&IData->FileInfo.LastAccessTime,
|
|
||||||
sizeof(FILETIME));
|
|
||||||
memcpy (&lpFindFileData->ftLastWriteTime,
|
|
||||||
&IData->FileInfo.LastWriteTime,
|
|
||||||
sizeof(FILETIME));
|
|
||||||
lpFindFileData->nFileSizeHigh = IData->FileInfo.EndOfFile.u.HighPart;
|
|
||||||
lpFindFileData->nFileSizeLow = IData->FileInfo.EndOfFile.u.LowPart;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
WINBOOL
|
WINBOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
InternalFindNextFile (
|
InternalFindNextFile (
|
||||||
HANDLE hFindFile,
|
HANDLE hFindFile
|
||||||
LPWIN32_FIND_DATA lpFindFileData
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
PKERNEL32_FIND_FILE_DATA IData;
|
PKERNEL32_FIND_FILE_DATA IData;
|
||||||
|
@ -112,8 +64,6 @@ InternalFindNextFile (
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
FileDataToWin32Data (lpFindFileData, IData);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,8 +71,7 @@ InternalFindNextFile (
|
||||||
HANDLE
|
HANDLE
|
||||||
STDCALL
|
STDCALL
|
||||||
InternalFindFirstFile (
|
InternalFindFirstFile (
|
||||||
LPCWSTR lpFileName,
|
LPCWSTR lpFileName
|
||||||
LPWIN32_FIND_DATA lpFindFileData
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||||
|
@ -210,8 +159,6 @@ InternalFindFirstFile (
|
||||||
}
|
}
|
||||||
DPRINT("Found %S\n",IData->FileInfo.FileName);
|
DPRINT("Found %S\n",IData->FileInfo.FileName);
|
||||||
|
|
||||||
FileDataToWin32Data(lpFindFileData, IData);
|
|
||||||
|
|
||||||
return IData;
|
return IData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,11 +167,10 @@ HANDLE
|
||||||
STDCALL
|
STDCALL
|
||||||
FindFirstFileA (
|
FindFirstFileA (
|
||||||
LPCTSTR lpFileName,
|
LPCTSTR lpFileName,
|
||||||
LPWIN32_FIND_DATA lpFindFileData
|
LPWIN32_FIND_DATAA lpFindFileData
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
PKERNEL32_FIND_FILE_DATA IData;
|
PKERNEL32_FIND_FILE_DATA IData;
|
||||||
PWIN32_FIND_DATA_ASCII Ret;
|
|
||||||
UNICODE_STRING FileNameU;
|
UNICODE_STRING FileNameU;
|
||||||
ANSI_STRING FileName;
|
ANSI_STRING FileName;
|
||||||
|
|
||||||
|
@ -241,11 +187,9 @@ FindFirstFileA (
|
||||||
&FileName,
|
&FileName,
|
||||||
TRUE);
|
TRUE);
|
||||||
|
|
||||||
IData = InternalFindFirstFile (FileNameU.Buffer, lpFindFileData);
|
IData = InternalFindFirstFile (FileNameU.Buffer);
|
||||||
|
|
||||||
RtlFreeHeap (RtlGetProcessHeap (),
|
RtlFreeUnicodeString (&FileNameU);
|
||||||
0,
|
|
||||||
FileNameU.Buffer);
|
|
||||||
|
|
||||||
if (IData == NULL)
|
if (IData == NULL)
|
||||||
{
|
{
|
||||||
|
@ -253,18 +197,30 @@ FindFirstFileA (
|
||||||
return INVALID_HANDLE_VALUE;
|
return INVALID_HANDLE_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ret = (PWIN32_FIND_DATA_ASCII)lpFindFileData;
|
|
||||||
|
|
||||||
DPRINT("IData->FileInfo.FileNameLength %d\n",
|
DPRINT("IData->FileInfo.FileNameLength %d\n",
|
||||||
IData->FileInfo.FileNameLength);
|
IData->FileInfo.FileNameLength);
|
||||||
|
|
||||||
|
/* copy data into WIN32_FIND_DATA structure */
|
||||||
|
lpFindFileData->dwFileAttributes = IData->FileInfo.FileAttributes;
|
||||||
|
memcpy (&lpFindFileData->ftCreationTime,
|
||||||
|
&IData->FileInfo.CreationTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
memcpy (&lpFindFileData->ftLastAccessTime,
|
||||||
|
&IData->FileInfo.LastAccessTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
memcpy (&lpFindFileData->ftLastWriteTime,
|
||||||
|
&IData->FileInfo.LastWriteTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
lpFindFileData->nFileSizeHigh = IData->FileInfo.EndOfFile.u.HighPart;
|
||||||
|
lpFindFileData->nFileSizeLow = IData->FileInfo.EndOfFile.u.LowPart;
|
||||||
|
|
||||||
FileNameU.Length = IData->FileInfo.FileNameLength * sizeof(WCHAR);
|
FileNameU.Length = IData->FileInfo.FileNameLength * sizeof(WCHAR);
|
||||||
FileNameU.MaximumLength = FileNameU.Length + sizeof(WCHAR);
|
FileNameU.MaximumLength = FileNameU.Length + sizeof(WCHAR);
|
||||||
FileNameU.Buffer = IData->FileInfo.FileName;
|
FileNameU.Buffer = IData->FileInfo.FileName;
|
||||||
|
|
||||||
FileName.Length = 0;
|
FileName.Length = 0;
|
||||||
FileName.MaximumLength = MAX_PATH;
|
FileName.MaximumLength = MAX_PATH;
|
||||||
FileName.Buffer = Ret->cFileName;
|
FileName.Buffer = lpFindFileData->cFileName;
|
||||||
|
|
||||||
/* convert unicode string to ansi (or oem) */
|
/* convert unicode string to ansi (or oem) */
|
||||||
if (bIsFileApiAnsi)
|
if (bIsFileApiAnsi)
|
||||||
|
@ -281,11 +237,11 @@ FindFirstFileA (
|
||||||
|
|
||||||
FileNameU.Length = IData->FileInfo.ShortNameLength * sizeof(WCHAR);
|
FileNameU.Length = IData->FileInfo.ShortNameLength * sizeof(WCHAR);
|
||||||
FileNameU.MaximumLength = FileNameU.Length + sizeof(WCHAR);
|
FileNameU.MaximumLength = FileNameU.Length + sizeof(WCHAR);
|
||||||
FileNameU.Buffer = IData->FileInfo.FileName;
|
FileNameU.Buffer = IData->FileInfo.ShortName;
|
||||||
|
|
||||||
FileName.Length = 0;
|
FileName.Length = 0;
|
||||||
FileName.MaximumLength = 14;
|
FileName.MaximumLength = 14;
|
||||||
FileName.Buffer = Ret->cAlternateFileName;
|
FileName.Buffer = lpFindFileData->cAlternateFileName;
|
||||||
|
|
||||||
/* convert unicode string to ansi (or oem) */
|
/* convert unicode string to ansi (or oem) */
|
||||||
if (bIsFileApiAnsi)
|
if (bIsFileApiAnsi)
|
||||||
|
@ -297,15 +253,16 @@ FindFirstFileA (
|
||||||
&FileNameU,
|
&FileNameU,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
||||||
return IData;
|
return (HANDLE)IData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WINBOOL
|
WINBOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData)
|
FindNextFileA (
|
||||||
|
HANDLE hFindFile,
|
||||||
|
LPWIN32_FIND_DATAA lpFindFileData)
|
||||||
{
|
{
|
||||||
PWIN32_FIND_DATA_ASCII Ret;
|
|
||||||
PKERNEL32_FIND_FILE_DATA IData;
|
PKERNEL32_FIND_FILE_DATA IData;
|
||||||
UNICODE_STRING FileNameU;
|
UNICODE_STRING FileNameU;
|
||||||
ANSI_STRING FileName;
|
ANSI_STRING FileName;
|
||||||
|
@ -316,24 +273,36 @@ FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!InternalFindNextFile (hFindFile, lpFindFileData))
|
if (!InternalFindNextFile (hFindFile))
|
||||||
{
|
{
|
||||||
DPRINT("InternalFindNextFile() failed\n");
|
DPRINT("InternalFindNextFile() failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ret = (PWIN32_FIND_DATA_ASCII)lpFindFileData;
|
|
||||||
|
|
||||||
DPRINT("IData->FileInfo.FileNameLength %d\n",
|
DPRINT("IData->FileInfo.FileNameLength %d\n",
|
||||||
IData->FileInfo.FileNameLength);
|
IData->FileInfo.FileNameLength);
|
||||||
|
|
||||||
|
/* copy data into WIN32_FIND_DATA structure */
|
||||||
|
lpFindFileData->dwFileAttributes = IData->FileInfo.FileAttributes;
|
||||||
|
memcpy (&lpFindFileData->ftCreationTime,
|
||||||
|
&IData->FileInfo.CreationTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
memcpy (&lpFindFileData->ftLastAccessTime,
|
||||||
|
&IData->FileInfo.LastAccessTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
memcpy (&lpFindFileData->ftLastWriteTime,
|
||||||
|
&IData->FileInfo.LastWriteTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
lpFindFileData->nFileSizeHigh = IData->FileInfo.EndOfFile.u.HighPart;
|
||||||
|
lpFindFileData->nFileSizeLow = IData->FileInfo.EndOfFile.u.LowPart;
|
||||||
|
|
||||||
FileNameU.Length = IData->FileInfo.FileNameLength * sizeof(WCHAR);
|
FileNameU.Length = IData->FileInfo.FileNameLength * sizeof(WCHAR);
|
||||||
FileNameU.MaximumLength = FileNameU.Length + sizeof(WCHAR);
|
FileNameU.MaximumLength = FileNameU.Length + sizeof(WCHAR);
|
||||||
FileNameU.Buffer = IData->FileInfo.FileName;
|
FileNameU.Buffer = IData->FileInfo.FileName;
|
||||||
|
|
||||||
FileName.Length = 0;
|
FileName.Length = 0;
|
||||||
FileName.MaximumLength = MAX_PATH;
|
FileName.MaximumLength = MAX_PATH;
|
||||||
FileName.Buffer = Ret->cFileName;
|
FileName.Buffer = lpFindFileData->cFileName;
|
||||||
|
|
||||||
/* convert unicode string to ansi (or oem) */
|
/* convert unicode string to ansi (or oem) */
|
||||||
if (bIsFileApiAnsi)
|
if (bIsFileApiAnsi)
|
||||||
|
@ -350,11 +319,11 @@ FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData)
|
||||||
|
|
||||||
FileNameU.Length = IData->FileInfo.ShortNameLength * sizeof(WCHAR);
|
FileNameU.Length = IData->FileInfo.ShortNameLength * sizeof(WCHAR);
|
||||||
FileNameU.MaximumLength = FileNameU.Length + sizeof(WCHAR);
|
FileNameU.MaximumLength = FileNameU.Length + sizeof(WCHAR);
|
||||||
FileNameU.Buffer = IData->FileInfo.FileName;
|
FileNameU.Buffer = IData->FileInfo.ShortName;
|
||||||
|
|
||||||
FileName.Length = 0;
|
FileName.Length = 0;
|
||||||
FileName.MaximumLength = 14;
|
FileName.MaximumLength = 14;
|
||||||
FileName.Buffer = Ret->cAlternateFileName;
|
FileName.Buffer = lpFindFileData->cAlternateFileName;
|
||||||
|
|
||||||
/* convert unicode string to ansi (or oem) */
|
/* convert unicode string to ansi (or oem) */
|
||||||
if (bIsFileApiAnsi)
|
if (bIsFileApiAnsi)
|
||||||
|
@ -401,25 +370,35 @@ HANDLE
|
||||||
STDCALL
|
STDCALL
|
||||||
FindFirstFileW (
|
FindFirstFileW (
|
||||||
LPCWSTR lpFileName,
|
LPCWSTR lpFileName,
|
||||||
LPWIN32_FIND_DATA lpFindFileData
|
LPWIN32_FIND_DATAW lpFindFileData
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
PWIN32_FIND_DATA_UNICODE Ret;
|
|
||||||
PKERNEL32_FIND_FILE_DATA IData;
|
PKERNEL32_FIND_FILE_DATA IData;
|
||||||
|
|
||||||
IData = InternalFindFirstFile (lpFileName, lpFindFileData);
|
IData = InternalFindFirstFile (lpFileName);
|
||||||
if (IData == NULL)
|
if (IData == NULL)
|
||||||
{
|
{
|
||||||
DPRINT("Failing request\n");
|
DPRINT("Failing request\n");
|
||||||
return INVALID_HANDLE_VALUE;
|
return INVALID_HANDLE_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ret = (PWIN32_FIND_DATA_UNICODE)lpFindFileData;
|
/* copy data into WIN32_FIND_DATA structure */
|
||||||
|
lpFindFileData->dwFileAttributes = IData->FileInfo.FileAttributes;
|
||||||
memcpy (Ret->cFileName,
|
memcpy (&lpFindFileData->ftCreationTime,
|
||||||
|
&IData->FileInfo.CreationTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
memcpy (&lpFindFileData->ftLastAccessTime,
|
||||||
|
&IData->FileInfo.LastAccessTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
memcpy (&lpFindFileData->ftLastWriteTime,
|
||||||
|
&IData->FileInfo.LastWriteTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
lpFindFileData->nFileSizeHigh = IData->FileInfo.EndOfFile.u.HighPart;
|
||||||
|
lpFindFileData->nFileSizeLow = IData->FileInfo.EndOfFile.u.LowPart;
|
||||||
|
memcpy (lpFindFileData->cFileName,
|
||||||
IData->FileInfo.FileName,
|
IData->FileInfo.FileName,
|
||||||
IData->FileInfo.FileNameLength);
|
IData->FileInfo.FileNameLength);
|
||||||
memcpy (Ret->cAlternateFileName,
|
memcpy (lpFindFileData->cAlternateFileName,
|
||||||
IData->FileInfo.ShortName,
|
IData->FileInfo.ShortName,
|
||||||
IData->FileInfo.ShortNameLength);
|
IData->FileInfo.ShortNameLength);
|
||||||
|
|
||||||
|
@ -431,26 +410,35 @@ WINBOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
FindNextFileW (
|
FindNextFileW (
|
||||||
HANDLE hFindFile,
|
HANDLE hFindFile,
|
||||||
LPWIN32_FIND_DATA lpFindFileData
|
LPWIN32_FIND_DATAW lpFindFileData
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
PWIN32_FIND_DATA_UNICODE Ret;
|
|
||||||
PKERNEL32_FIND_FILE_DATA IData;
|
PKERNEL32_FIND_FILE_DATA IData;
|
||||||
|
|
||||||
IData = (PKERNEL32_FIND_FILE_DATA)hFindFile;
|
IData = (PKERNEL32_FIND_FILE_DATA)hFindFile;
|
||||||
if (!InternalFindNextFile(hFindFile, lpFindFileData))
|
if (!InternalFindNextFile(hFindFile))
|
||||||
{
|
{
|
||||||
DPRINT("Failing request\n");
|
DPRINT("Failing request\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ret = (PWIN32_FIND_DATA_UNICODE)lpFindFileData;
|
/* copy data into WIN32_FIND_DATA structure */
|
||||||
|
lpFindFileData->dwFileAttributes = IData->FileInfo.FileAttributes;
|
||||||
memcpy (Ret->cFileName,
|
memcpy (&lpFindFileData->ftCreationTime,
|
||||||
|
&IData->FileInfo.CreationTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
memcpy (&lpFindFileData->ftLastAccessTime,
|
||||||
|
&IData->FileInfo.LastAccessTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
memcpy (&lpFindFileData->ftLastWriteTime,
|
||||||
|
&IData->FileInfo.LastWriteTime,
|
||||||
|
sizeof(FILETIME));
|
||||||
|
lpFindFileData->nFileSizeHigh = IData->FileInfo.EndOfFile.u.HighPart;
|
||||||
|
lpFindFileData->nFileSizeLow = IData->FileInfo.EndOfFile.u.LowPart;
|
||||||
|
memcpy (lpFindFileData->cFileName,
|
||||||
IData->FileInfo.FileName,
|
IData->FileInfo.FileName,
|
||||||
IData->FileInfo.FileNameLength);
|
IData->FileInfo.FileNameLength);
|
||||||
|
memcpy (lpFindFileData->cAlternateFileName,
|
||||||
memcpy (Ret->cAlternateFileName,
|
|
||||||
IData->FileInfo.ShortName,
|
IData->FileInfo.ShortName,
|
||||||
IData->FileInfo.ShortNameLength);
|
IData->FileInfo.ShortNameLength);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue