source: trunk/src/kernel32/stubs.cpp@ 3833

Last change on this file since 3833 was 3799, checked in by sandervl, 25 years ago

CopyFileExA/W, CreateDirectoryExA/W unstubbed, GetShortPathNameA/W fixes

File size: 99.9 KB
Line 
1/* $Id: stubs.cpp,v 1.23 2000-07-04 08:41:13 sandervl Exp $ */
2
3/*
4 * Win32 KERNEL32 Subsystem for OS/2
5 *
6 * 1998/05/19 PH Patrick Haller (haller@zebra.fh-weingarten.de)
7 *
8 * @(#) Stubs.H 1.0.0 1998/05/19 PH start
9 *
10 * Project Odin Software License can be found in LICENSE.TXT
11 *
12 */
13
14/*****************************************************************************
15 * Includes *
16 *****************************************************************************/
17#include <os2win.h>
18#include <winnls.h>
19#include "unicode.h"
20#include <builtin.h>
21#include "handlemanager.h"
22#include <string.h>
23
24#include "stubs.h"
25
26#define DBG_LOCALLOG DBG_stubs
27#include "dbglocal.h"
28
29
30/*****************************************************************************
31 * Defines *
32 *****************************************************************************/
33
34
35// For DefineDosDevice
36
37#define DDD_RAW_TARGET_PATH 0x00000001
38#define DDD_REMOVE_DEFINITION 0x00000002
39#define DDD_EXACT_MATCH_ON_REMOVE 0x00000004
40#define DDD_NO_BROADCAST_SYSTEM 0x00000008
41
42
43// For Backup functions
44
45//
46// Stream Ids
47//
48
49#define BACKUP_INVALID 0x00000000
50#define BACKUP_DATA 0x00000001
51#define BACKUP_EA_DATA 0x00000002
52#define BACKUP_SECURITY_DATA 0x00000003
53#define BACKUP_ALTERNATE_DATA 0x00000004
54#define BACKUP_LINK 0x00000005
55#define BACKUP_PROPERTY_DATA 0x00000006
56
57//
58// Stream Attributes
59//
60
61#define STREAM_NORMAL_ATTRIBUTE 0x00000000
62#define STREAM_MODIFIED_WHEN_READ 0x00000001
63#define STREAM_CONTAINS_SECURITY 0x00000002
64#define STREAM_CONTAINS_PROPERTIES 0x00000004
65
66
67// Locale
68#define LCID DWORD
69
70/*
71 * Locale Dependent Mapping Flags.
72 */
73
74#define LCMAP_LOWERCASE 0x00000100 /* lower case letters */
75#define LCMAP_UPPERCASE 0x00000200 /* upper case letters */
76#define LCMAP_SORTKEY 0x00000400 /* WC sort key (normalize) */
77#define LCMAP_BYTEREV 0x00000800 /* byte reversal */
78
79#define LCMAP_HIRAGANA 0x00100000 /* map katakana to hiragana */
80#define LCMAP_KATAKANA 0x00200000 /* map hiragana to katakana */
81#define LCMAP_HALFWIDTH 0x00400000 /* map double byte to single byte */
82#define LCMAP_FULLWIDTH 0x00800000 /* map single byte to double byte */
83
84#define LCMAP_LINGUISTIC_CASING 0x01000000 /* use linguistic rules for casing */
85
86#define LCMAP_SIMPLIFIED_CHINESE 0x02000000 /* map traditional chinese to simplified chinese */
87#define LCMAP_TRADITIONAL_CHINESE 0x04000000 /* map simplified chinese to traditional chinese */
88
89
90
91/*
92 * Locale Enumeration Flags.
93 */
94#define LCID_INSTALLED 0x00000001 /* installed locale ids */
95#define LCID_SUPPORTED 0x00000002 /* supported locale ids */
96
97
98
99// For FindFirstFileEx
100
101#define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001
102
103/*****************************************************************************
104 * Structures *
105 *****************************************************************************/
106
107 // For FindFirstFileEx
108
109typedef enum _FINDEX_INFO_LEVELS {
110 FindExInfoStandard,
111 FindExInfoMaxInfoLevel
112} FINDEX_INFO_LEVELS;
113
114typedef enum _FINDEX_SEARCH_OPS {
115 FindExSearchNameMatch,
116 FindExSearchLimitToDirectories,
117 FindExSearchLimitToDevices,
118 FindExSearchMaxSearchOp
119} FINDEX_SEARCH_OPS;
120
121 // For Backup funtions
122
123typedef struct _WIN32_STREAM_ID {
124
125 DWORD dwStreamId;
126 DWORD dwStreamAttributes;
127 LARGE_INTEGER Size;
128 DWORD dwStreamNameSize;
129// WCHAR cStreamName[ ] ; /* @@@PH */
130 WCHAR cStreamName[1] ;
131} WIN32_STREAM_ID;
132
133
134//
135// File structures
136//
137
138//typedef struct _OVERLAPPED {
139// DWORD Internal;
140// DWORD InternalHigh;
141// DWORD Offset;
142// DWORD OffsetHigh;
143// HANDLE hEvent;
144//} OVERLAPPED, *LPOVERLAPPED;
145
146//typedef struct _SECURITY_ATTRIBUTES {
147// DWORD nLength;
148// LPVOID lpSecurityDescriptor;
149// BOOL bInheritHandle;
150//} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
151
152//typedef struct _PROCESS_INFORMATION {
153// HANDLE hProcess;
154// HANDLE hThread;
155// DWORD dwProcessId;
156// DWORD dwThreadId;
157//} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
158
159// For Fiber functions
160
161typedef VOID (WINAPI *PFIBER_START_ROUTINE)(
162 LPVOID lpFiberParameter
163 );
164typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
165
166// For Enum CalendarInfo & EnumSystemCodePages see winnls.h
167
168/*
169 * Calendar type constant.
170 */
171typedef DWORD CALTYPE;
172
173/*
174 * Calendar ID.
175 */
176typedef DWORD CALID;
177
178
179/*****************************************************************************
180 * Prototypes *
181 *****************************************************************************/
182
183void WIN32API CommonUnimpStub()
184{
185 dprintf(("STUB: KERNEL32.17!!"));
186}
187
188/*****************************************************************************
189 * Name : BOOL WIN32API AreFileApisANSI (VOID)
190 * Purpose : The AreFileApisANSI function determines whether a set of Win32
191 * file functions is using the ANSI or OEM character set code page.
192 * This function is useful for 8-bit console input and output
193 * operations.
194 * Parameters: NONE
195 * Variables :
196 * Result : If the set of Win32 file functions is using the ANSI code page,
197 * the return value is nonzero.
198 * If the set of Win32 file functions is using the OEM code page,
199 * the return value is zero.
200 * Remark :
201 * Status : UNTESTED STUB
202 *
203 * Author : Markus Montkowski [Thu, 1998/02/19 11:46]
204 *****************************************************************************/
205
206BOOL WIN32API AreFileApisANSI (VOID)
207{
208
209 dprintf(("KERNEL32:AreFileApisANSI() not implemented - TRUE\n"
210 ));
211
212 return (TRUE);
213}
214
215/*****************************************************************************
216 * Name : BOOL WIN32API BackupRead(
217 * Purpose : The BackupRead function reads data associated with a specified
218 * file or directory into a buffer. You use this function to back
219 * up a file or directory.
220 * Parameters: HANDLE hFile handle to file or directory
221 * LPBYTE lpBuffer pointer to buffer to read to
222 * DWORD nNumberOfBytesToRead number of bytes to read
223 * LPDWORD lpNumberOfBytesRead pointer to variable to receive
224 * number of bytes read
225 * BOOL bAbort termination type
226 * BOOL bProcessSecurity process security flag
227 * LPVOID *lpContext pointer to pointer to internal
228 * context information
229 * Variables :
230 * Result : 0 on Error Nonzero if OK
231 * Remark : BackupRead processes all of the data pertaining to an opened
232 * object as a series of discrete byte streams. Each stream is
233 * preceded by a 32-bit aligned WIN32_STREAM_ID structure.
234 * Streams must be processed in the same order in which they were
235 * written to the tape. This ordering enables applications to
236 * compare the data backed up against the data on the source device.
237 * The data returned by BackupRead is to be used only as input to
238 * the BackupWrite function. This data is returned as one large data
239 * stream divided into substreams. The substreams are separated
240 * by WIN32_STREAM_ID headers.
241 *
242 * If an error occurs while BackupRead is reading, the calling
243 * process can skip the bad data by calling the BackupSeek function.
244 * Status : UNTESTED STUB
245 *
246 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
247 *****************************************************************************/
248
249BOOL WIN32API BackupRead(
250 HANDLE hFile, // handle to file or directory
251 LPBYTE lpBuffer, // pointer to buffer to read to
252 DWORD nNumberOfBytesToRead, // number of bytes to read
253 LPDWORD lpNumberOfBytesRead, // pointer to variable to receive number of bytes read
254 BOOL bAbort, // termination type
255 BOOL bProcessSecurity, // process security flag
256 LPVOID *lpContext // pointer to pointer to internal context information
257)
258{
259
260 dprintf(("KERNEL32:BackupRead(%08x,%08x,%08x,%08x,%08x,%08x,%08x) not implemented\n",
261 hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead,
262 bAbort, bProcessSecurity, lpContext
263 ));
264
265 return (FALSE);
266}
267/*****************************************************************************
268 * Name : BOOL WIN32API BackupSeek()
269 * Purpose : The BackupSeek function seeks forward in a data stream initially
270 * accessed by using the BackupRead or BackupWrite function.
271 * Parameters: HANDLE hFile handle to open file
272 * DWORD dwLowBytesToSeek low-order 32 bits of number of bytes
273 * DWORD dwHighBytesToSeek high-order 32 bits of number of bytes
274 * LPDWORD lpdwLowByteSeeked pointer to number of bytes function seeks
275 * LPDWORD lpdwHighByteSeeked pointer to number of bytes function seeks
276 * LPVOID *lpContext pointer to internal context information
277 *
278 * Variables :
279 * Result : If the function could seek the requested amount, the function
280 * returns nonzero.
281 * If the function could not seek the requested amount, the function
282 * returns zero.
283 * Remark : Applications use the BackUpSeek function to skip portions of a
284 * data stream that cause errors. This function does not seek across
285 * stream headers. If an application attempts to seek past the end
286 * of a substream, the function fails, the lpdwLowByteSeeked and
287 * lpdwHighByteSeeked parameters indicate the actual number of bytes
288 * the function seeks, and the file position is placed at the start
289 * of the next stream header.
290 * Status : UNTESTED STUB
291 *
292 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
293 *****************************************************************************/
294
295BOOL WIN32API BackupSeek( HANDLE hFile, DWORD dwLowBytesToSeek,
296 DWORD dwHighBytesToSeek,
297 LPDWORD lpdwLowByteSeeked,
298 LPDWORD lpdwHighByteSeeked,LPVOID *lpContext)
299{
300
301 dprintf(("KERNEL32:BackupSeek(%08x,%08x,%08x,%08x,%08x,08x) not implemented\n",
302 hFile, dwLowBytesToSeek,dwHighBytesToSeek,
303 lpdwLowByteSeeked, lpdwHighByteSeeked, lpContext));
304
305 return (FALSE);
306}
307
308/*****************************************************************************
309 * Name : BOOL WIN32API BackupWrite
310 * Purpose : The BackupWrite function writes a stream of data from a buffer to
311 * a specified file or directory. The data must be divided into
312 * substreams separated by WIN32_STREAM_ID structures. You use this
313 * function to restore a file or directory that has been backed up.
314 * Parameters: HANDLE hFile handle to file or directory
315 * LPBYTE lpBuffer pointer to buffer containing data
316 * to write
317 * DWORD nNumberOfBytesToWrite number of bytes to write
318 * LPDWORD lpNumberOfBytesWritten pointer to variable to receive
319 * number of bytes written
320 * BOOL bAbort termination type
321 * BOOL bProcessSecurity process security
322 * LPVOID *lpContext pointer to pointer to internal
323 * context information
324 *
325 * Variables :
326 * Result : If the function succeeds, the return value is nonzero.
327 * If the function fails, the return value is zero,
328 * indicating that an I/O error occurred.
329 * To get extended error information, call GetLastError.
330 * Remark :
331 * Status : UNTESTED STUB
332 *
333 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
334 *****************************************************************************/
335
336BOOL WIN32API BackupWrite( HANDLE hFile, LPBYTE lpBuffer,
337 DWORD nNumberOfBytesToWrite,
338 LPDWORD lpNumberOfBytesWritten,
339 BOOL bAbort, BOOL bProcessSecurity,
340 LPVOID *lpContext)
341{
342
343 dprintf(("KERNEL32:BackupWrite(%08x,%0x8,%08x,%08x,%08x,%08x,%08x) not implemented\n",
344 hFile, lpBuffer, nNumberOfBytesToWrite,
345 lpNumberOfBytesWritten, bAbort, bProcessSecurity, lpContext));
346
347 return (FALSE);
348}
349
350/*****************************************************************************
351 * Name : HANDLE WIN32API BeginUpdateResourceA
352 * Purpose : The BeginUpdateResource function returns a handle that can be
353 * used by the UpdateResource function to add, delete, or replace
354 * resources in an executable file.
355 * Parameters: LPCSTR pFileName pointer to file in which to
356 * update resources
357 * BOOL bDeleteExistingResources deletion option
358 *
359 * Variables :
360 * Result : If the function succeeds, the return value is a handle that can
361 * be used by the UpdateResource and EndUpdateResource functions.
362 * The return value is NULL if the specified file is not an
363 * executable file, the executable file is already loaded,
364 * the file does not exist, or the file cannot be opened for writing.
365 * To get extended error information, call GetLastError
366 * Remark :
367 * Status : UNTESTED STUB
368 *
369 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
370 *****************************************************************************/
371
372HANDLE WIN32API BeginUpdateResourceA( LPCSTR pFileName,
373 BOOL bDeleteExistingResources)
374{
375
376 dprintf(("KERNEL32: BeginUpdateResource(%08x,%08x) not implemented\n",
377 pFileName, bDeleteExistingResources
378 ));
379
380 return (NULL);
381}
382
383/*****************************************************************************
384 * Name : HANDLE WIN32API BeginUpdateResourceW
385 * Purpose : The BeginUpdateResource function returns a handle that can be
386 * used by the UpdateResource function to add, delete, or replace
387 * resources in an executable file.
388 * Parameters: LPCWSTR pFileName pointer to file in which to
389 * update resources
390 * BOOL bDeleteExistingResources deletion option
391 *
392 * Variables :
393 * Result : If the function succeeds, the return value is a handle that can
394 * be used by the UpdateResource and EndUpdateResource functions.
395 * The return value is NULL if the specified file is not an
396 * executable file, the executable file is already loaded,
397 * the file does not exist, or the file cannot be opened for writing.
398 * To get extended error information, call GetLastError
399 * Remark :
400 * Status : UNTESTED STUB
401 *
402 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
403 *****************************************************************************/
404
405HANDLE WIN32API BeginUpdateResourceW( LPCWSTR pFileName,
406 BOOL bDeleteExistingResources)
407{
408
409 dprintf(("KERNEL32: BeginUpdateResource(%08x,%08x) not implemented\n",
410 pFileName, bDeleteExistingResources
411 ));
412
413 return (NULL);
414}
415
416/*****************************************************************************
417 * Name : BOOL WIN32API CancelIo
418 * Purpose : The CancelIO function cancels all pending input and output
419 * (I/O) operations that were issued by the calling thread for
420 * the specified file handle. The function does not cancel
421 * I/O operations issued for the file handle by other threads.
422 * Parameters: HANDLE hFile file handle for which to cancel I/O
423 * Variables :
424 * Result : If the function succeeds, the return value is nonzero All pending
425 * I/O operations issued by the calling thread for the file handle
426 * were successfully canceled.
427 * If the function fails, the return value is zero.
428 * To get extended error information, call GetLastError.
429 * Remark : If there are any I/O operations in progress for the specified
430 * file handle, and they were issued by the calling thread, the
431 * CancelIO function cancels them.
432 * Note that the I/O operations must have been issued as
433 * overlapped I/O. If they were not, the I/O operations would not
434 * have returned to allow the thread to call the CancelIO function.
435 * Calling the CancelIO function with a file handle that was not
436 * opened with FILE_FLAG_OVERLAPPED does nothing.
437 * All I/O operations that are canceled will complete with the
438 * error ERROR_OPERATION_ABORTED. All completion notifications
439 * for the I/O operations will occur normally.
440 * Status : UNTESTED STUB
441 *
442 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
443 *****************************************************************************/
444
445BOOL WIN32API CancelIo(HANDLE hFile)
446{
447
448 dprintf(("KERNEL32:CancelIo(%08x) not implemented\n",
449 hFile
450 ));
451
452 return (FALSE);
453}
454
455/*****************************************************************************
456 * Name : BOOL CancelWaitableTimer
457 * Purpose : The CancelWaitableTimer function sets the specified "waitable"
458 * timer to the inactive state.
459 * Parameters: HANDLE hTimer handle to a timer object
460 * Variables :
461 * Result : If the function succeeds, the return value is nonzero.
462 * If the function fails, the return value is zero.
463 * To get extended error information, call GetLastError.
464 * Remark : The CancelWaitableTimer function does not change the signaled
465 * state of the timer. It stops the timer before it can be set to
466 * the signaled state. Therefore, threads performing a wait
467 * operation on the timer remain waiting until they time out or
468 * the timer is reactivated and its state is set to signaled.
469 *
470 * To reactivate the timer, call the SetWaitableTimer function.
471 * Status : UNTESTED STUB
472 *
473 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
474 *****************************************************************************/
475
476BOOL WIN32API CancelWaitableTimer(HANDLE hTimer)
477{
478
479 dprintf(("KERNEL32:CancelWaitableTimer(%08x) not implemented\n",
480 hTimer
481 ));
482
483 return (FALSE);
484}
485
486
487
488/*****************************************************************************
489 * Name : LCID WIN32API ConvertDefaultLocale
490 * Purpose : The ConvertDefaultLocale function converts a special default
491 * locale value to an actual locale identifier.
492 * Parameters: LCID Locale special default locale value to be converted
493 * Value Description
494 * LOCALE_SYSTEM_DEFAULT The system's default locale.
495 * LOCALE_USER_DEFAULT The current user's default locale.
496 * zero The language-neutral default locale.
497 * This is equivalent to the locale identifier
498 * created by calling the MAKELCID macro
499 * with a language identifier consisting
500 * of the LANG_NEUTRAL and SUBLANG_NEUTRAL
501 * values.
502 * Any sublanguage neutral default locale
503 * A locale identifier constructed by
504 * calling MAKELCID with a language
505 * identifier consisting of a primary
506 * language value, such as LANG_ENGLISH,
507 * and the SUBLANG_NEUTRAL value.
508 *
509 * Variables :
510 * Result : If the function succeeds, the return value is the appropriate
511 * actual locale identifier.
512 * If the function fails, the return value is the Locale parameter.
513 * The function fails when Locale is not one of the special
514 * default locale values listed above.
515 * Remark : A call to ConvertDefaultLocale(LOCALE_SYSTEM_DEFAULT)
516 * is equivalent to a call to GetSystemDefaultLCID.
517 * A call to ConvertDefaultLocale(LOCALE_USER_DEFAULT)
518 * is equivalent to a call to GetUserDefaultLCID.
519 * Status : UNTESTED STUB
520 *
521 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
522 *****************************************************************************/
523
524LCID WIN32API ConvertDefaultLocale(LCID Locale)
525{
526
527 dprintf(("KERNEL32: ConvertDefaultLocale(%08x) partly implmented - returns input\n",
528 Locale
529 ));
530
531 return (Locale);
532}
533
534/*****************************************************************************
535 * Name : LPVOID WIN32API CreateFiber
536 * Purpose : The CreateFiber function allocates a fiber object, assigns it a
537 * stack, and sets up execution to begin at the specified
538 * start address, typically the fiber function.
539 * This function does not schedule the fiber.
540 * Parameters: DWORD dwStackSize initial thread stack size, in bytes
541 * LPFIBER_START_ROUTINE lpStartAddress pointer to fiber function
542 * LPVOID lpParameter argument for new fiber
543 * Variables :
544 * Result : If the function succeeds, the return value is the address of
545 * the fiber.
546 * If the function fails, the return value is NULL.
547 * Remark : Before a thread can schedule a fiber using the SwitchToFiber
548 * function, it must call the ConvertThreadToFiber function so there
549 * is a fiber associated with the thread.
550 * The fiber function is of type FIBER_START_ROUTINE.
551 * It accepts a single value of type PVOID (fiber data) and does not
552 * return a value. The prototype for this function is as follows:
553 *
554 * VOID WINAPI FiberFunc( PVOID lpParameter );
555 *
556 * Status : UNTESTED STUB
557 *
558 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
559 *****************************************************************************/
560
561LPVOID WIN32API CreateFiber( DWORD dwStackSize,
562 LPFIBER_START_ROUTINE lpStartAddress,
563 LPVOID lpParameter)
564{
565
566 dprintf(("KERNEL32:CreateFiber(%08x,%08x,%08x) not implemented\n",
567 dwStackSize, lpStartAddress,lpParameter
568 ));
569
570 return (NULL);
571}
572
573
574/*****************************************************************************
575 * Name : HANDLE WIN32API CreateIoCompletionPort
576 * Purpose : The CreateIoCompletionPort function can associate an instance of
577 * an opened file with a newly created or an existing input/output
578 * completion port; or it can create an input/output completion port
579 * without associating it with a file.
580 * Associating an instance of an opened file with an input/output
581 * completion port lets an application receive notification of the
582 * completion of asynchronous input/output operations involving that
583 * file.
584 * Parameters: HANDLE FileHandle file handle to associate with I/O
585 * completion port. Must be created
586 * with flag FILE_FLAG_OVERLAPPED !
587 * HANDLE ExistingCompletionPort optional handle to existing
588 * I/O completion port
589 * DWORD CompletionKey per-file completion key for
590 * I/O completion packets
591 * DWORD NumberOfConcurrentThreads number of threads allowed to
592 * execute concurrently
593 * Variables :
594 * Result : If the function succeeds, the return value is the handle to the
595 * I/O completion port that is associated with the specified file.
596 * This return value is not NULL.
597 * If the function fails, the return value is NULL.
598 * Remark : The Win32 I/O system can be instructed to send I/O completion
599 * notification packets to input/output completion ports, where they
600 * are queued up. The CreateIoCompletionPort function provides a
601 * mechanism for this.
602 * When you perform an input/output operation with a file handle
603 * that has an associated input/output completion port, the
604 * I/O system sends a completion notification packet to the
605 * completion port when the I/O operation completes.
606 * The I/O completion port places the completion packet in a
607 * first-in-first-out queue.
608 * Use the GetQueuedCompletionStatus function to retrieve these
609 * queued I/O completion packets.
610 * Threads in the same process can use the PostQueuedCompletionStatus
611 * function to place I/O completion notification packets in a
612 * completion port's queue. This allows you to use the port to
613 * receive communications from other threads of the process,
614 * in addition to receiving I/O completion notification packets
615 * from the Win32 I/O system.
616 * Status : UNTESTED STUB
617 *
618 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
619 *****************************************************************************/
620
621HANDLE WIN32API CreateIoCompletionPort( HANDLE FileHandle,
622 HANDLE ExistingCompletionPort,
623 DWORD CompletionKey,
624 DWORD NumberOfConcurrentThreads)
625{
626
627 dprintf(("KERNEL32: CreateIoCompletionPort(%08x,%08x,%08x,%08x) not implemented\n",
628 FileHandle, ExistingCompletionPort, CompletionKey,
629 NumberOfConcurrentThreads
630 ));
631
632 return (NULL);
633}
634/*****************************************************************************
635 * Name : HANDLE WIN32API CreateMailslotA
636 * Purpose : The CreateMailslot function creates a mailslot with the specified
637 * name and returns a handle that a mailslot server can use to
638 * perform operations on the mailslot. The mailslot is local to the
639 * computer that creates it. An error occurs if a mailslot with
640 * the specified name already exists.
641 * Parameters: LPCSTR lpName pointer to string for mailslot name
642 * DWORD nMaxMessageSize maximum message size
643 * DWORD lReadTimeout milliseconds before read time-out
644 * LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security structure
645 * Variables :
646 * Result : If the function succeeds, the return value is a handle to
647 * the mailslot, for use in server mailslot operations.
648 * If the function fails, the return value is INVALID_HANDLE_VALUE.
649 * Remark :
650 * Status : UNTESTED STUB
651 *
652 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
653 *****************************************************************************/
654
655HANDLE WIN32API CreateMailslotA(LPCSTR lpName, DWORD nMaxMessageSize,
656 DWORD lReadTimeout,
657 LPSECURITY_ATTRIBUTES lpSecurityAttributes)
658{
659
660 dprintf(("KERNEL32: CreateMailslotA(%08x,%08x,%08x,%08x) not implemented - INVALID_HANDLE_VALUE\n",
661 lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes
662 ));
663
664 return (INVALID_HANDLE_VALUE);
665}
666
667/*****************************************************************************
668 * Name : HANDLE WIN32API CreateMailslotW
669 * Purpose : The CreateMailslot function creates a mailslot with the specified
670 * name and returns a handle that a mailslot server can use to
671 * perform operations on the mailslot. The mailslot is local to the
672 * computer that creates it. An error occurs if a mailslot with
673 * the specified name already exists.
674 * Parameters: LPCWSTR lpName pointer to string for mailslot name
675 * DWORD nMaxMessageSize maximum message size
676 * DWORD lReadTimeout milliseconds before read time-out
677 * LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security
678 * structure
679 * Variables :
680 * Result : If the function succeeds, the return value is a handle to
681 * the mailslot, for use in server mailslot operations.
682 * If the function fails, the return value is INVALID_HANDLE_VALUE.
683 * Remark :
684 * Status : UNTESTED STUB
685 *
686 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
687 *****************************************************************************/
688
689HANDLE WIN32API CreateMailslotW(LPCWSTR lpName, DWORD nMaxMessageSize,
690 DWORD lReadTimeout,
691 LPSECURITY_ATTRIBUTES lpSecurityAttributes)
692{
693
694 dprintf(("KERNEL32: CreateMailslotW(%08x,%08x,%08x,%08x) not implemented - INVALID_HANDLE_VALUE\n",
695 lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes
696 ));
697
698 return (INVALID_HANDLE_VALUE);
699}
700
701/*****************************************************************************
702 * Name : HANDLE WIN32API CreateRemoteThread
703 * Purpose : The CreateRemoteThread function creates a thread that runs in
704 * the address space of another process.
705 * Parameters: HANDLE hProcess handle to process to create thread in
706 * LPSECURITY_ATTRIBUTES lpThreadAttributes pointer to thread
707 * security attributes
708 * DWORD dwStackSize initial thread stack size, in bytes
709 * LPTHREAD_START_ROUTINE lpStartAddress pointer to thread function
710 * LPVOID lpParameter pointer to argument for new thread
711 * DWORD dwCreationFlags creation flags
712 * LPDWORD lpThreadId pointer to returned thread identifier
713 * Variables :
714 * Result : If the function succeeds, the return value is a handle to
715 * the new thread.
716 * If the function fails, the return value is NULL.
717 * Remark :
718 * Status : UNTESTED STUB
719 *
720 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
721 *****************************************************************************/
722
723HANDLE WIN32API CreateRemoteThread( HANDLE hProcess,
724 LPSECURITY_ATTRIBUTES lpThreadAttributes,
725 DWORD dwStackSize,
726 LPTHREAD_START_ROUTINE lpStartAddress,
727 LPVOID lpParameter,DWORD dwCreationFlags,
728 LPDWORD lpThreadId )
729{
730
731 dprintf(("KERNEL32: CreateRemoteThread(%08x,%08x,%08x,%08x,%08x,%08x,%08x) not implemented\n",
732 hProcess, lpThreadAttributes, dwStackSize, lpStartAddress,
733 lpParameter, dwCreationFlags, lpThreadId
734 ));
735
736 return (NULL);
737}
738/*****************************************************************************
739 * Name : DWORD WIN32API CreateTapePartition
740 * Purpose : The CreateTapePartition function reformats a tape.
741 * Parameters: HANDLE hDevice handle to open device
742 * DWORD dwPartitionMethode type of new partition
743 * DWORD dwCount number of new partitions to create
744 * DWORD dwSize size of new partition, in megabytes
745 * Variables :
746 * Result : If the function succeeds, the return value is NO_ERROR.
747 * If the function fails, it may return one of the following
748 * error codes:
749 * Error Description
750 * ERROR_BEGINNING_OF_MEDIA An attempt to access data before
751 * the beginning-of-medium marker failed.
752 * ERROR_BUS_RESET A reset condition was detected on the bus.
753 * ERROR_END_OF_MEDIA The end-of-tape marker was reached
754 * during an operation.
755 * ERROR_FILEMARK_DETECTED A filemark was reached during an operation.
756 * ERROR_SETMARK_DETECTED A setmark was reached during an operation.
757 * ERROR_NO_DATA_DETECTED The end-of-data marker was reached
758 * during an operation.
759 * ERROR_PARTITION_FAILURE The tape could not be partitioned.
760 * ERROR_INVALID_BLOCK_LENGTH The block size is incorrect on a
761 * new tape in a multivolume partition.
762 * ERROR_DEVICE_NOT_PARTITIONED The partition information could not
763 * be found when a tape was being loaded.
764 * ERROR_MEDIA_CHANGED The tape that was in the drive has
765 * been replaced or removed.
766 * ERROR_NO_MEDIA_IN_DRIVE There is no media in the drive.
767 * ERROR_NOT_SUPPORTED The tape driver does not support a
768 * requested function.
769 * ERROR_UNABLE_TO_LOCK_MEDIA An attempt to lock the ejection
770 * mechanism failed.
771 * ERROR_UNABLE_TO_UNLOAD_MEDIA An attempt to unload the tape failed.
772 * ERROR_WRITE_PROTECT The media is write protected.
773 * Remark : Creating partitions reformats the tape. All previous information
774 * recorded on the tape is destroyed.
775 * Errorcodes are defined in winerror.h
776 * Status : UNTESTED STUB
777 *
778 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
779 *****************************************************************************/
780
781DWORD WIN32API CreateTapePartition( HANDLE hDevice, DWORD dwPartitionMethod,
782 DWORD dwCount, DWORD dwSize)
783{
784
785 dprintf(("KERNEL32: CreateTapePartition(%08x,%08x,%08x,%08x) not implemented - ERROR_NOT_SUPPORTED\n",
786 hDevice, dwPartitionMethod, dwCount, dwSize
787 ));
788
789 return (ERROR_NOT_SUPPORTED);
790}
791/*****************************************************************************
792 * Name : HANDLE WIN23API CreateWaitableTimerA
793 * Purpose : The CreateWaitableTimerA function creates a "waitable" timer object.
794 * Parameters: LPSECURITY_ATTRIBUTES lpTimerAttributes pointer to security attributes
795 * BOOL bManualReset flag for manual reset state
796 * LPCTSTR lpTimerName pointer to timer object name
797 * Variables :
798 * Result : If the function succeeds, the return value is a handle to the
799 * timer object. If the named timer object exists before the
800 * function call, GetLastError returns ERROR_ALREADY_EXISTS.
801 * Otherwise, GetLastError returns zero.
802 * If the function fails, the return value is NULL
803 * Remark :
804 * Status : UNTESTED STUB
805 *
806 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
807 *****************************************************************************/
808
809HANDLE WIN32API CreateWaitableTimerA( LPSECURITY_ATTRIBUTES lpTimerAttributes,
810 BOOL bManualReset, LPCSTR lpTimerName)
811{
812
813 dprintf(("KERNEL32: CreateWaitableTimer(%08x,%08x,%08x) not implemented\n",
814 lpTimerAttributes, bManualReset, lpTimerName
815 ));
816
817 return (NULL);
818}
819
820/*****************************************************************************
821 * Name : HANDLE WIN23API CreateWaitableTimerW
822 * Purpose : The CreateWaitableTimerW function creates a "waitable" timer object.
823 * Parameters: LPSECURITY_ATTRIBUTES lpTimerAttributes pointer to security attributes
824 * BOOL bManualReset flag for manual reset state
825 * LPCTSTR lpTimerName pointer to timer object name
826 * Variables :
827 * Result : If the function succeeds, the return value is a handle to the
828 * timer object. If the named timer object exists before the
829 * function call, GetLastError returns ERROR_ALREADY_EXISTS.
830 * Otherwise, GetLastError returns zero.
831 * If the function fails, the return value is NULL
832 * Remark :
833 * Status : UNTESTED STUB
834 *
835 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
836 *****************************************************************************/
837
838HANDLE WIN32API CreateWaitableTimerW( LPSECURITY_ATTRIBUTES lpTimerAttributes,
839 BOOL bManualReset, LPCWSTR lpTimerName)
840{
841
842 dprintf(("KERNEL32: CreateWaitableTimer(%08x,%08x,%08x) not implemented\n",
843 lpTimerAttributes, bManualReset, lpTimerName
844 ));
845
846 return (NULL);
847}
848
849/*****************************************************************************
850 * Name : BOOL WIN32API DebugActiveProcess
851 * Purpose : The DebugActiveProcess function allows a debugger to attach to
852 * an active process and then debug it.
853 * Parameters: DWORD dwProcessId process to be debugged
854 * Variables :
855 * Result : If the function succeeds, the return value is nonzero.
856 * If the function fails, the return value is zero
857 * Remark :
858 * Status : UNTESTED STUB
859 *
860 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
861 *****************************************************************************/
862
863BOOL WIN32API DebugActiveProcess(DWORD dwProcessId)
864{
865
866 dprintf(("KERNEL32:DebugActiveProcess(%08x) not implemented\n",
867 dwProcessId
868 ));
869
870 return (FALSE);
871}
872
873/*****************************************************************************
874 * Name : BOOL WIN32API DefineDosDeviceA
875 * Purpose : The DefineDosDeviceA function lets an application define,
876 * redefine, or delete MS-DOS device names.
877 * MS-DOS device names are stored as symbolic links in the object
878 * name space in 32-bit versions of Windows. The code that converts
879 * an MS-DOS path into a corresponding path in 32-bit versions of
880 * Windows uses these symbolic links to map MS-DOS devices and drive
881 * letters. The DefineDosDevice function provides a mechanism
882 * whereby a Win32-based application can modify the symbolic links
883 * used to implement the MS-DOS device name space.
884 * Parameters: DWORD dwFlags flags specifying aspects of device definition
885 * LPCSTR lpDeviceName pointer to MS-DOS device name string
886 * LPCSTR lpTargetPath pointer to MS-DOS or path string for
887 * 32-bit Windows
888 * Variables :
889 * Result : If the function succeeds, the return value is nonzero.
890 * If the function fails, the return value is zero
891 * Remark :
892 * Status : UNTESTED STUB
893 *
894 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
895 *****************************************************************************/
896
897BOOL WIN32API DefineDosDeviceA( DWORD dwFlags, LPCSTR lpDeviceName,
898 LPCSTR lpTargetPath )
899{
900
901 dprintf(("KERNEL32: DefineDosDeviceA(%08x,%08x,%08x) not implemented\n",
902 dwFlags, lpDeviceName, lpTargetPath
903 ));
904
905 return (FALSE);
906}
907
908/*****************************************************************************
909 * Name : BOOL WIN32API DefineDosDeviceW
910 * Purpose : UNICODE version of DefineDosDeviceA
911 * Parameters: DWORD dwFlags flags specifying aspects of device definition
912 * LPCSTR lpDeviceName pointer to MS-DOS device name string
913 * LPCSTR lpTargetPath pointer to MS-DOS or path string for
914 * 32-bit Windows
915 * Variables :
916 * Result : If the function succeeds, the return value is nonzero.
917 * If the function fails, the return value is zero
918 * Remark :
919 * Status : UNTESTED STUB
920 *
921 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
922 *****************************************************************************/
923
924BOOL WIN32API DefineDosDeviceW( DWORD dwFlags, LPCWSTR lpDeviceName,
925 LPCWSTR lpTargetPath )
926{
927
928 dprintf(("KERNEL32: DefineDosDeviceW(%08x,%08x,%08x) not implemented\n",
929 dwFlags, lpDeviceName, lpTargetPath
930 ));
931
932 return (FALSE);
933}
934
935/*****************************************************************************
936 * Name : VOID WIN32API DeleteFiber
937 * Purpose : The DeleteFiber function deletes an existing fiber
938 * Parameters: LPVOID lpFiber pointer to the fiber to delete
939 * Variables :
940 * Result : No returnvalue
941 * Remark : The DeleteFiber function deletes all data associated with the
942 * fiber. This data includes the stack, a subset of the registers,
943 * and the fiber data. If the currently running fiber calls
944 * DeleteFiber, the ExitThread function is called and the thread
945 * terminates. If the currently running fiber is deleted by another
946 * thread, the thread associated with the fiber is likely to
947 * terminate abnormally because the fiber stack has been freed.
948 * Status : UNTESTED STUB
949 *
950 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
951 *****************************************************************************/
952
953VOID WIN32API DeleteFiber(LPVOID lpFiber)
954{
955
956 dprintf(("KERNEL32: DeleteFiber(%08x) not implemented\n",
957 lpFiber
958 ));
959}
960/*****************************************************************************
961 * Name : BOOL WIN3API EndUpdateResourceA
962 * Purpose : The EndUpdateResourceA function ends a resource update
963 * in an executable file.
964 * Parameters: HANDLE hUpdate update-file handle
965 * BOOL fDiscard write flag
966 * Variables :
967 * Result : If the function succeeds and the accumulated resource
968 * modifications specified by calls to the UpdateResource function
969 * are written to the specified executable file,
970 * the return value is nonzero.
971 * If the function fails, the return value is zero
972 * Remark :
973 * Status : UNTESTED STUB
974 *
975 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
976 *****************************************************************************/
977
978BOOL WIN32API EndUpdateResourceA(HANDLE hUpdate,BOOL fDiscard)
979{
980
981 dprintf(("KERNEL32:EndUpdateResourceA(%08x,%08x)not implemented\n",
982 hUpdate, fDiscard
983 ));
984
985 return (FALSE);
986}
987
988/*****************************************************************************
989 * Name : BOOL WIN3API EndUpdateResourceW
990 * Purpose : The EndUpdateResourceW function ends a resource update
991 * in an executable file.
992 * Parameters: HANDLE hUpdate update-file handle
993 * BOOL fDiscard write flag
994 * Variables :
995 * Result : If the function succeeds and the accumulated resource
996 * modifications specified by calls to the UpdateResource function
997 * are written to the specified executable file,
998 * the return value is nonzero.
999 * If the function fails, the return value is zero
1000 * Remark :
1001 * Status : UNTESTED STUB
1002 *
1003 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1004 *****************************************************************************/
1005
1006BOOL WIN32API EndUpdateResourceW(HANDLE hUpdate,BOOL fDiscard)
1007{
1008
1009 dprintf(("KERNEL32:EndUpdateResourceW(%08x,%08x) not implemented\n",
1010 hUpdate, fDiscard
1011 ));
1012
1013 return (FALSE);
1014}
1015
1016/*****************************************************************************
1017 * Name : BOOL WIN32API EnumCalendarInfoA
1018 * Purpose : The EnumCalendarInfoA function enumerates calendar information
1019 * for a specified locale. The CalType parameter specifies the type
1020 * of calendar information to enumerate. The function returns the
1021 * specified calendar information for all applicable calendars for
1022 * the locale, or for a single requested calendar, depending on the
1023 * value of the Calendar parameter.
1024 * The EnumCalendarInfo function enumerates the calendar information
1025 * by calling an application-defined callback function. It passes
1026 * the callback function a pointer to a string buffer containing
1027 * the requested calendar information. This continues until either
1028 * the last applicable calendar is found or the callback function
1029 * returns FALSE.
1030 * Parameters: CALINFO_ENUMPROCA lpCalInfoEnumProc pointer to enumeration
1031 * callback function
1032 * LCID Locale locale whose calendar information is of interest
1033 * CALID Calendar calendar whose information is of interest
1034 * CALTYPE CalType type of calendar information of interest
1035 * Variables :
1036 * Result : If the function succeeds, the return value is nonzero.
1037 * If the function fails, the return value is zero
1038 * Remark :
1039 * Status : UNTESTED STUB
1040 *
1041 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1042 *****************************************************************************/
1043
1044BOOL WIN32API EnumCalendarInfoA(CALINFO_ENUMPROCA lpCalInfoEnumProc,
1045 LCID Locale,
1046 CALID Calendar,
1047 CALTYPE CalType)
1048{
1049
1050 dprintf(("KERNEL32: EnumCalendarInfoA(%08x,%08x,%08x,%08x)not implemented\n",
1051 lpCalInfoEnumProc,
1052 Locale,
1053 Calendar,
1054 CalType
1055 ));
1056
1057 return (FALSE);
1058}
1059
1060/*****************************************************************************
1061 * Name : BOOL WIN32API EnumCalendarInfoW
1062 * Purpose : The EnumCalendarInfoW function enumerates calendar information
1063 * for a specified locale. The CalType parameter specifies the type
1064 * of calendar information to enumerate. The function returns the
1065 * specified calendar information for all applicable calendars for
1066 * the locale, or for a single requested calendar, depending on the
1067 * value of the Calendar parameter.
1068 * The EnumCalendarInfo function enumerates the calendar information
1069 * by calling an application-defined callback function. It passes
1070 * the callback function a pointer to a string buffer containing
1071 * the requested calendar information. This continues until either
1072 * the last applicable calendar is found or the callback function
1073 * returns FALSE.
1074 * Parameters: CALINFO_ENUMPROCW lpCalInfoEnumProc pointer to enumeration
1075 * callback function
1076 * LCID Locale locale whose calendar information is of interest
1077 * CALID Calendar calendar whose information is of interest
1078 * CALTYPE CalType type of calendar information of interest
1079 * Variables :
1080 * Result : If the function succeeds, the return value is nonzero.
1081 * If the function fails, the return value is zero
1082 * Remark :
1083 * Status : UNTESTED STUB
1084 *
1085 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1086 *****************************************************************************/
1087
1088BOOL WIN32API EnumCalendarInfoW(CALINFO_ENUMPROCW lpCalInfoEnumProc,
1089 LCID Locale,
1090 CALID Calendar,
1091 CALTYPE CalType)
1092{
1093
1094 dprintf(("KERNEL32: EnumCalendarInfoW(%08x,%08x,%08x,%08x)not implemented\n",
1095 lpCalInfoEnumProc,
1096 Locale,
1097 Calendar,
1098 CalType
1099 ));
1100
1101 return (FALSE);
1102}
1103
1104/*****************************************************************************
1105 * Name : BOOL WIN32API EnumSystemCodePagesA
1106 * Purpose : The EnumSystemCodePagesA function enumerates the code pages that
1107 * are either installed on or supported by a system. The dwFlags
1108 * parameter determines whether the function enumerates installed
1109 * or supported code pages. The function enumerates the code pages
1110 * by passing code page identifiers, one at a time, to the specified
1111 * application-defined callback function. This continues until all
1112 * of the installed or supported code page identifiers have been
1113 * passed to the callback function, or the callback function
1114 * returns FALSE
1115 * Parameters: CODEPAGE_ENUMPROCA lpCodePageEnumProc pointer to enumeration
1116 * callback function
1117 * DWORD dwFlags indicates which code pages
1118 * to enumerate
1119 * Variables :
1120 * Result : If the function succeeds, the return value is nonzero.
1121 * If the function fails, the return value is zero
1122 * Remark :
1123 * Status : UNTESTED STUB
1124 *
1125 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1126 *****************************************************************************/
1127
1128BOOL WIN32API EnumSystemCodePagesA(CODEPAGE_ENUMPROCA lpCodePageEnumProc,
1129 DWORD dwFlags)
1130{
1131
1132 dprintf(("KERNEL32: EnumSystemCodePagesA(%08x,%08x) not implemented\n",
1133 lpCodePageEnumProc, dwFlags
1134 ));
1135
1136 return (FALSE);
1137}
1138
1139/*****************************************************************************
1140 * Name : BOOL WIN32API EnumSystemCodePagesW
1141 * Purpose : The EnumSystemCodePagesW function enumerates the code pages that
1142 * are either installed on or supported by a system. The dwFlags
1143 * parameter determines whether the function enumerates installed
1144 * or supported code pages. The function enumerates the code pages
1145 * by passing code page identifiers, one at a time, to the specified
1146 * application-defined callback function. This continues until all
1147 * of the installed or supported code page identifiers have been
1148 * passed to the callback function, or the callback function
1149 * returns FALSE
1150 * Parameters: CODEPAGE_ENUMPROCW lpCodePageEnumProc pointer to enumeration
1151 * callback function
1152 * DWORD dwFlags indicates which code pages
1153 * to enumerate
1154 * Variables :
1155 * Result : If the function succeeds, the return value is nonzero.
1156 * If the function fails, the return value is zero
1157 * Remark :
1158 * Status : UNTESTED STUB
1159 *
1160 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1161 *****************************************************************************/
1162
1163BOOL WIN32API EnumSystemCodePagesW(CODEPAGE_ENUMPROCW lpCodePageEnumProc,
1164 DWORD dwFlags)
1165{
1166
1167 dprintf(("KERNEL32: EnumSystemCodePagesA(%08x,%08x) not implemented\n",
1168 lpCodePageEnumProc, dwFlags
1169 ));
1170
1171 return (FALSE);
1172}
1173
1174/*****************************************************************************
1175 * Name : DWORD WIN32API EraseTape
1176 * Purpose : The EraseTape function erases all or part of a tape.
1177 * Parameters: HANDLE hDevice handle to open device
1178 * DWORD dwEraseType type of erasure to perform
1179 * BOOL bImmediate return after erase operation begins
1180 * Variables :
1181 * Result : If the function succeeds, the return value is NO_ERROR.
1182 * If the function fails, the return value is like in
1183 * CreateTapePartition
1184 * Remark : Some tape devices do not support certain tape operations. To de
1185 * termine your tape device's capabilities, see your tape device
1186 * documentation and use the GetTapeParameters function
1187 * Status : UNTESTED STUB
1188 *
1189 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1190 *****************************************************************************/
1191
1192DWORD WIN32API EraseTape( HANDLE hDevice, DWORD dwEraseType, BOOL bImmediate)
1193{
1194
1195 dprintf(("KERNEL32: EraseTape(%08x,%08x,%08x) not implemented - ERROR_NOT_SUPPORTED\n",
1196 hDevice, dwEraseType, bImmediate
1197 ));
1198
1199 return (ERROR_NOT_SUPPORTED);
1200}
1201
1202
1203/*****************************************************************************
1204 * Name : HANDLE WIN32API FindFirstFileExA
1205 * Purpose : The FindFirstFileExA function searches a directory for a file
1206 * whose name and attributes match those specified in the
1207 * function call.
1208 * Parameters: LPCSTR lpFileName pointer to the name of the file
1209 * to search for
1210 * FINDEX_INFO_LEVELS fInfoLevelId information level of the returned data
1211 * LPVOID lpFindFileData pointer to the returned information
1212 * FINDEX_SEARCH_OPS fSearchOp type of filtering to perform
1213 * LPVOID lpSearchFilter pointer to search criteria
1214 * DWORD dwAdditionalFlags additional search control flags
1215 * Variables :
1216 * Result : If the function succeeds, the return value is a search handle
1217 * that can be used in a subsequent call to the FindNextFile or
1218 * FindClose functions.
1219 * If the function fails, the return value is INVALID_HANDLE_VALUE
1220 * Remark :
1221 * Status : UNTESTED STUB
1222 *
1223 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1224 *****************************************************************************/
1225
1226HANDLE WIN32API FindFirstFileExA( LPCSTR lpFileName,
1227 FINDEX_INFO_LEVELS fInfoLevelId,
1228 LPVOID lpFindFileData,
1229 FINDEX_SEARCH_OPS fSearchOp,
1230 LPVOID lpSearchFilter,
1231 DWORD dwAdditionalFlags)
1232{
1233
1234 dprintf(("KERNEL32: FindFirstFileExA(%08x,%08x,%08x,%08x,%08x,%08x)not implemented - INVALID_HANDLE_VALUE\n",
1235 lpFileName,
1236 fInfoLevelId,
1237 lpFindFileData,
1238 fSearchOp,
1239 lpSearchFilter,
1240 dwAdditionalFlags
1241 ));
1242
1243 return (INVALID_HANDLE_VALUE);
1244}
1245
1246/*****************************************************************************
1247 * Name : HANDLE WIN32API FindFirstFileExW
1248 * Purpose : The FindFirstFileExW function searches a directory for a file
1249 * whose name and attributes match those specified in the
1250 * function call.
1251 * Parameters: LPCWSTR lpFileName pointer to the name of the file
1252 * to search for
1253 * FINDEX_INFO_LEVELS fInfoLevelId information level of the returned data
1254 * LPVOID lpFindFileData pointer to the returned information
1255 * FINDEX_SEARCH_OPS fSearchOp type of filtering to perform
1256 * LPVOID lpSearchFilter pointer to search criteria
1257 * DWORD dwAdditionalFlags additional search control flags
1258 * Variables :
1259 * Result : If the function succeeds, the return value is a search handle
1260 * that can be used in a subsequent call to the FindNextFile or
1261 * FindClose functions.
1262 * If the function fails, the return value is INVALID_HANDLE_VALUE
1263 * Remark :
1264 * Status : UNTESTED STUB
1265 *
1266 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1267 *****************************************************************************/
1268
1269HANDLE WIN32API FindFirstFileExW( LPCWSTR lpFileName,
1270 FINDEX_INFO_LEVELS fInfoLevelId,
1271 LPVOID lpFindFileData,
1272 FINDEX_SEARCH_OPS fSearchOp,
1273 LPVOID lpSearchFilter,
1274 DWORD dwAdditionalFlags)
1275{
1276
1277 dprintf(("KERNEL32: FindFirstFileExW(%08x,%08x,%08x,%08x,%08x,%08x)not implemented - INVALID_HANDLE_VALUE\n",
1278 lpFileName,
1279 fInfoLevelId,
1280 lpFindFileData,
1281 fSearchOp,
1282 lpSearchFilter,
1283 dwAdditionalFlags
1284 ));
1285
1286 return (INVALID_HANDLE_VALUE);
1287}
1288
1289/*****************************************************************************
1290 * Name : int WIN32API FoldStringA
1291 * Purpose : The FoldStringW function maps one string to another, performing
1292 * a specified transformation option.
1293 * Parameters: DWORD dwMapFlags, // mapping transformation options
1294 * LPCSTR lpSrcStr, // pointer to source string
1295 * int cchSrc, // size of source string, in bytes or characters
1296 * LPSTR lpDestStr, // pointer to destination buffer
1297 * int cchDest // size of destination buffer, in bytes or characters
1298 * Variables :
1299 * Result : If the function succeeds, the return value is the number of bytes
1300 * (ANSI version) or characters (Unicode version) written to the
1301 * destination buffer, or if the cchDest parameter is zero,
1302 * the number of bytes or characters required to hold the mapped
1303 * string.
1304 * If the function fails, the return value is zero
1305 * Remark :
1306 * Status : UNTESTED STUB
1307 *
1308 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1309 *****************************************************************************/
1310
1311int WIN32API FoldStringA( DWORD dwMapFlags, LPCSTR lpSrcStr,
1312 int cchSrc, LPSTR lpDestStr, int cchDest)
1313{
1314
1315 dprintf(("KERNEL32: FoldStringA(%08x,%08x,%08x,%08x,%08x) not implemented\n",
1316 dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest
1317 ));
1318
1319 return (0);
1320}
1321
1322/*****************************************************************************
1323 * Name : int WIN32API FoldStringW
1324 * Purpose : The FoldStringW function maps one string to another, performing
1325 * a specified transformation option.
1326 * Parameters: DWORD dwMapFlags, // mapping transformation options
1327 * LPCSTR lpSrcStr, // pointer to source string
1328 * int cchSrc, // size of source string, in bytes or characters
1329 * LPSTR lpDestStr, // pointer to destination buffer
1330 * int cchDest // size of destination buffer, in bytes or characters
1331 * Variables :
1332 * Result : If the function succeeds, the return value is the number of bytes
1333 * (ANSI version) or characters (Unicode version) written to the
1334 * destination buffer, or if the cchDest parameter is zero,
1335 * the number of bytes or characters required to hold the mapped
1336 * string.
1337 * If the function fails, the return value is zero
1338 * Remark :
1339 * Status : UNTESTED STUB
1340 *
1341 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1342 *****************************************************************************/
1343
1344int WIN32API FoldStringW( DWORD dwMapFlags, LPCWSTR lpSrcStr,
1345 int cchSrc, LPWSTR lpDestStr, int cchDest)
1346{
1347
1348 dprintf(("KERNEL32: FoldStringA(%08x,%08x,%08x,%08x,%08x) not implemented\n",
1349 dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest
1350 ));
1351
1352 return (0);
1353}
1354
1355
1356/*****************************************************************************
1357 * Name : VOID WIN32API FreeLibraryAndExitThread
1358 * Purpose : The FreeLibraryAndExitThread function decrements the reference
1359 * count of a loaded dynamic-link library (DLL) by one, and then
1360 * calls ExitThread to terminate the calling thread.
1361 * The function does not return.
1362 *
1363 * The FreeLibraryAndExitThread function gives threads that are
1364 * created and executed within a dynamic-link library an opportunity
1365 * to safely unload the DLL and terminate themselves.
1366 * Parameters:
1367 * Variables :
1368 * Result :
1369 * Remark :
1370 * Status : UNTESTED STUB
1371 *
1372 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1373 *****************************************************************************/
1374
1375VOID WIN32API FreeLibraryAndExitThread( HMODULE hLibModule, DWORD dwExitCode)
1376{
1377
1378 dprintf(("KERNEL32: FreeLibraryAndExitThread(%08x,%08x) not implemented\n",
1379 hLibModule, dwExitCode
1380 ));
1381
1382}
1383
1384
1385/*****************************************************************************
1386 * Name : int GetCurrencyFormatA
1387 * Purpose : The GetCurrencyFormatA function formats a number string as a
1388 * currency string for a specified locale.
1389 * Parameters: LCID Locale locale for which currency string is to be formatted
1390 * DWORD dwFlags bit flag that controls the function's operation
1391 * LPCTSTR lpValue pointer to input number string
1392 * CONST CURRENCYFMT *lpFormat pointer to a formatting information structure
1393 * LPTSTR lpCurrencyStr pointer to output buffer
1394 * int cchCurrency size of output buffer
1395 * Variables :
1396 * Result : number of bytes written to buffer
1397 * Remark :
1398 * Status : UNTESTED STUB
1399 *
1400 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1401 *****************************************************************************/
1402
1403int WIN32API GetCurrencyFormatA(LCID Locale,
1404 DWORD dwFlags,
1405 LPCTSTR lpValue,
1406 CONST CURRENCYFMTA *lpFormat,
1407 LPTSTR lpCurrencyStr,
1408 int cchCurrency)
1409{
1410 dprintf(("KERNEL32: GetCurrencyFormatA(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented\n",
1411 Locale,
1412 dwFlags,
1413 lpValue,
1414 lpFormat,
1415 lpCurrencyStr,
1416 cchCurrency));
1417
1418 if(lpValue && lpCurrencyStr) {
1419 lstrcpyA(lpCurrencyStr, lpValue);
1420 return lstrlenA(lpCurrencyStr);
1421 }
1422 return (0);
1423}
1424
1425
1426/*****************************************************************************
1427 * Name : int GetCurrencyFormatW
1428 * Purpose : The GetCurrencyFormatW function formats a number string as a
1429 * currency string for a specified locale.
1430 * Parameters: LCID Locale locale for which currency string is to be formatted
1431 * DWORD dwFlags bit flag that controls the function's operation
1432 * LPCWSTR lpValue pointer to input number string
1433 * CONST CURRENCYFMT *lpFormat pointer to a formatting information structure
1434 * LPWSTR lpCurrencyStr pointer to output buffer
1435 * int cchCurrency size of output buffer
1436 * Variables :
1437 * Result : number of bytes written to buffer
1438 * Remark :
1439 * Status : UNTESTED STUB
1440 *
1441 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1442 *****************************************************************************/
1443
1444int WIN32API GetCurrencyFormatW(LCID Locale,
1445 DWORD dwFlags,
1446 LPCWSTR lpValue,
1447 CONST CURRENCYFMTW *lpFormat,
1448 LPWSTR lpCurrencyStr,
1449 int cchCurrency)
1450{
1451 dprintf(("KERNEL32: GetCurrencyFormatW(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented\n",
1452 Locale,
1453 dwFlags,
1454 lpValue,
1455 lpFormat,
1456 lpCurrencyStr,
1457 cchCurrency));
1458
1459 if(lpValue && lpCurrencyStr) {
1460 lstrcpyW(lpCurrencyStr, lpValue);
1461 return lstrlenW(lpCurrencyStr);
1462 }
1463
1464 return (0);
1465}
1466
1467
1468/*****************************************************************************
1469 * Name : DWORD GetHandleInformation
1470 * Purpose : The GetHandleInformation function obtains information about certain
1471 * properties of an object handle. The information is obtained as a set of bit flags.
1472 * Parameters: HANDLE hObject
1473 * LPDWORD lpdwFlags
1474 * Variables :
1475 * Result : TRUE / FALSE
1476 * Remark :
1477 * Status : UNTESTED STUB
1478 *
1479 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1480 *****************************************************************************/
1481
1482BOOL WIN32API GetHandleInformation(HANDLE hObject,
1483 LPDWORD lpdwFlags)
1484{
1485 dprintf(("KERNEL32: GetHandleInformation (%08xh, %08xh) not implemented\n",
1486 hObject,
1487 lpdwFlags));
1488
1489 return (FALSE);
1490}
1491
1492
1493/*****************************************************************************
1494 * Name : BOOL GetMailslotInfo
1495 * Purpose : The GetMailslotInfo function retrieves information about the
1496 * specified mailslot.
1497 * Parameters: HANDLE hMailslot mailslot handle
1498 * LPDWORD lpMaxMessageSize address of maximum message size
1499 * LPDWORD lpNextSize address of size of next message
1500 * LPDWORD lpMessageCount address of number of messages
1501 * LPDWORD lpReadTimeout address of read time-out
1502 * Variables :
1503 * Result : TRUE / FALSE
1504 * Remark :
1505 * Status : UNTESTED STUB
1506 *
1507 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1508 *****************************************************************************/
1509
1510BOOL WIN32API GetMailslotInfo(HANDLE hMailslot,
1511 LPDWORD lpMaxMessageSize,
1512 LPDWORD lpNextSize,
1513 LPDWORD lpMessageCount,
1514 LPDWORD lpReadTimeout)
1515{
1516 dprintf(("KERNEL32: GetMailslotInfo(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented\n",
1517 hMailslot,
1518 lpMaxMessageSize,
1519 lpNextSize,
1520 lpMessageCount,
1521 lpReadTimeout));
1522
1523 return (FALSE);
1524}
1525
1526
1527
1528/*****************************************************************************
1529 * Name : BOOL GetQueuedCompletionStatus
1530 * Purpose : The GetQueuedCompletionStatus function attempts to dequeue an
1531 * I/O completion packet from a specified input/output completion
1532 * port. If there is no completion packet queued, the function waits
1533 * for a pending input/output operation associated with the completion
1534 * port to complete. The function returns when it can dequeue a
1535 * completion packet, or optionally when the function times out. If
1536 * the function returns because of an I/O operation completion, it
1537 * sets several variables that provide information about the operation.
1538 * Parameters: HANDLE CompletionPort the I/O completion port of interest
1539 * LPDWORD lpNumberOfBytesTransferred to receive number of bytes transferred during I/O
1540 * LPDWORD lpCompletionKey to receive file's completion key
1541 * LPOVERLAPPED * lpOverlapped to receive pointer to OVERLAPPED structure
1542 * DWORD dwMilliseconds optional timeout value
1543 * Variables :
1544 * Result : TRUE / FALSE
1545 * Remark :
1546 * Status : UNTESTED STUB
1547 *
1548 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1549 *****************************************************************************/
1550
1551BOOL WIN32API GetQueuedCompletionStatus(HANDLE CompletionPort,
1552 LPDWORD lpNumberOfBytesTransferred,
1553 LPDWORD lpCompletionKey,
1554 LPOVERLAPPED *lpOverlapped,
1555 DWORD dwMilliseconds)
1556{
1557 dprintf(("Kernel32: GetQueuedCompletionStatus(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.",
1558 CompletionPort,
1559 lpNumberOfBytesTransferred,
1560 lpCompletionKey,
1561 lpOverlapped,
1562 dwMilliseconds));
1563
1564 return (FALSE);
1565}
1566
1567
1568
1569/*****************************************************************************
1570 * Name : BOOL GetSystemTimeAdjustment
1571 * Purpose : The GetSystemTimeAdjustment function determines whether the system
1572 * is applying periodic time adjustments to its time-of-day clock
1573 * at each clock interrupt, along with the value and period of any
1574 * such adjustments. Note that the period of such adjustments is
1575 * equivalent to the time period between clock interrupts.
1576 * Parameters: PDWORD lpTimeAdjustment
1577 * size, in 100-nanosecond units, of a periodic time adjustment
1578 * PDWORD lpTimeIncrement
1579 * time, in 100-nanosecond units, between periodic time adjustments
1580 * PBOOL lpTimeAdjustmentDisabled
1581 * whether periodic time adjustment is disabled or enabled
1582 * Variables :
1583 * Result : TRUE / FALSE
1584 * Remark :
1585 * Status : UNTESTED STUB
1586 *
1587 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1588 *****************************************************************************/
1589
1590BOOL WIN32API GetSystemTimeAdjustment(PDWORD lpTimeAdjustment,
1591 PDWORD lpTimeIncrement,
1592 PBOOL lpTimeAdjustmentDisabled)
1593{
1594 dprintf(("KERNEL32: GetSystemTimeAdjustment(%08xh,%08xh,%08xh) not implemented.\n",
1595 lpTimeAdjustment,
1596 lpTimeIncrement,
1597 lpTimeAdjustmentDisabled));
1598
1599 return (FALSE);
1600}
1601
1602
1603/*****************************************************************************
1604 * Name : BOOL GetTapeParameters
1605 * Purpose : The GetTapeParameters function retrieves information that
1606 * describes the tape or the tape drive.
1607 * Parameters: HANDLE hDevice handle of open device
1608 * DWORD dwOperation type of information requested
1609 * LPDWORD lpdwSize address of returned information
1610 * LPVOID lpTapeInformation tape media or drive information
1611 * Variables :
1612 * Result : API returncode
1613 * Remark :
1614 * Status : UNTESTED STUB
1615 *
1616 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1617 *****************************************************************************/
1618
1619DWORD WIN32API GetTapeParameters(HANDLE hDevice,
1620 DWORD dwOperation,
1621 LPDWORD lpdwSize,
1622 LPVOID lpTapeInformation)
1623{
1624 dprintf(("KERNEL32: GetTapeParameters(%08xh,%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
1625 hDevice,
1626 dwOperation,
1627 lpdwSize,
1628 lpTapeInformation));
1629
1630 return (ERROR_NOT_SUPPORTED);
1631}
1632
1633
1634/*****************************************************************************
1635 * Name : BOOL GetTapePosition
1636 * Purpose : The GetTapePosition function retrieves the current address of
1637 * the tape, in logical or absolute blocks.
1638 * Parameters: HANDLE hDevice handle of open device
1639 * DWORD dwPositionType type of address to obtain
1640 * LPDWORD lpdwPartition address of current tape partition
1641 * LPDWORD lpdwOffsetLow address of low-order 32 bits of tape position
1642 * LPDWORD lpdwOffsetHigh address of high-order 32 bits of tape position
1643 * Variables :
1644 * Result : TRUE / FALSE
1645 * Remark :
1646 * Status : UNTESTED STUB
1647 *
1648 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1649 *****************************************************************************/
1650
1651DWORD WIN32API GetTapePosition(HANDLE hDevice,
1652 DWORD dwPositionType,
1653 LPDWORD lpdwPartition,
1654 LPDWORD lpdwOffsetLow,
1655 LPDWORD lpdwOffsetHigh)
1656{
1657 dprintf(("KERNEL32: OS2GetTapePosition(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
1658 hDevice,
1659 dwPositionType,
1660 lpdwPartition,
1661 lpdwOffsetLow,
1662 lpdwOffsetHigh));
1663
1664 return (ERROR_NOT_SUPPORTED);
1665}
1666
1667
1668/*****************************************************************************
1669 * Name : BOOL GetTapeStatus
1670 * Purpose : The GetTapeStatus function indicates whether the tape device is
1671 * ready to process tape commands.
1672 * Parameters: HANDLE hDevice handle of open device
1673 * Variables :
1674 * Result : API returncode
1675 * Remark :
1676 * Status : UNTESTED STUB
1677 *
1678 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1679 *****************************************************************************/
1680
1681DWORD WIN32API GetTapeStatus(HANDLE hDevice)
1682{
1683 dprintf(("KERNEL32: OS2GetTapeStatus(%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
1684 hDevice));
1685
1686 return (ERROR_NOT_SUPPORTED);
1687}
1688
1689
1690/*****************************************************************************
1691 * Name : BOOL GetThreadSelectorEntry
1692 * Purpose : The GetThreadSelectorEntry function retrieves a descriptor table
1693 * entry for the specified selector and thread.
1694 * Parameters: HANDLE hThread handle of thread that contains selector
1695 * DWORD dwSelector number of selector value to look up
1696 * LPLDT_ENTRY lpSelectorEntry address of selector entry structure
1697 * Variables :
1698 * Result : TRUE / FALSE
1699 * Remark :
1700 * Status : UNTESTED STUB
1701 *
1702 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1703 *****************************************************************************/
1704
1705BOOL WIN32API GetThreadSelectorEntry(HANDLE hThread,
1706 DWORD dwSelector,
1707 LPLDT_ENTRY lpSelectorEntry)
1708{
1709 dprintf(("KERNEL32: GetThreadSelectorEntry(%08xh,%08xh,%08xh) not implemented.\n",
1710 hThread,
1711 dwSelector,
1712 lpSelectorEntry));
1713
1714 return (FALSE);
1715}
1716
1717
1718/*****************************************************************************
1719 * Name : BOOL GetThreadTimes
1720 * Purpose : The GetThreadTimes function obtains timing information about a specified thread.
1721 * Parameters: HANDLE hThread specifies the thread of interest
1722 * LPFILETIME lpCreationTime when the thread was created
1723 * LPFILETIME lpExitTime when the thread exited
1724 * LPFILETIME lpKernelTime time the thread has spent in kernel mode
1725 * LPFILETIME lpUserTime time the thread has spent in user mode
1726 * Variables :
1727 * Result : TRUE / FALSE
1728 * Remark :
1729 * Status : UNTESTED STUB
1730 *
1731 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1732 *****************************************************************************/
1733
1734BOOL WIN32API GetThreadTimes(HANDLE hThread,
1735 LPFILETIME lpCreationTime,
1736 LPFILETIME lpExitTime,
1737 LPFILETIME lpKernelTime,
1738 LPFILETIME lpUserTime)
1739{
1740 dprintf(("Kernel32: GetThreadTimes(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
1741 hThread,
1742 lpCreationTime,
1743 lpExitTime,
1744 lpKernelTime,
1745 lpUserTime));
1746
1747 return (FALSE);
1748}
1749
1750
1751
1752/*****************************************************************************
1753 * Name : BOOL PostQueuedCompletionStatus
1754 * Purpose : The PostQueuedCompletionStatus function lets you post an I/O
1755 * completion packet to an I/O completion port. The I/O completion
1756 * packet will satisfy an outstanding call to the GetQueuedCompletionStatus
1757 * function. The GetQueuedCompletionStatus function returns with the three
1758 * values passed as the second, third, and fourth parameters of the call
1759 * to PostQueuedCompletionStatus.
1760 * Parameters: HANDLE CompletionPort handle to an I/O completion port
1761 * DWORD dwNumberOfBytesTransferred
1762 * DWORD dwCompletionKey
1763 * LPOVERLAPPED lpOverlapped
1764 * Variables :
1765 * Result : TRUE / FALSE
1766 * Remark :
1767 * Status : UNTESTED STUB
1768 *
1769 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1770 *****************************************************************************/
1771
1772BOOL WIN32API PostQueuedCompletionStatus(HANDLE CompletionPort,
1773 DWORD dwNumberOfBytesTransferred,
1774 DWORD dwCompletionKey,
1775 LPOVERLAPPED lpOverlapped)
1776{
1777 dprintf(("Kernel32: PostQueuedCompletionStatus(%08xh,%08xh,%08xh,%08xh) not implemented.",
1778 CompletionPort,
1779 dwNumberOfBytesTransferred,
1780 dwCompletionKey,
1781 lpOverlapped));
1782
1783 return (FALSE);
1784}
1785
1786
1787/*****************************************************************************
1788 * Name : DWORD PrepareTape
1789 * Purpose : The PrepareTape function prepares the tape to be accessed or removed.
1790 * Parameters: HANDLE hDevice handle of open device
1791 * DWORD dwOperation preparation method
1792 * BOOL bImmediate return after operation begins
1793 * Variables :
1794 * Result : API returncode
1795 * Remark :
1796 * Status : UNTESTED STUB
1797 *
1798 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1799 *****************************************************************************/
1800
1801DWORD WIN32API PrepareTape(HANDLE hDevice,
1802 DWORD dwOperation,
1803 BOOL bImmediate)
1804{
1805 dprintf(("Kernel32: PrepareTape(%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
1806 hDevice,
1807 dwOperation,
1808 bImmediate));
1809
1810 return (ERROR_NOT_SUPPORTED);
1811}
1812
1813
1814/*****************************************************************************
1815 * Name : DWORD QueryDosDeviceA
1816 * Purpose : The QueryDosDevice function lets an application obtain information
1817 * about MS-DOS device names. The function can obtain the current
1818 * mapping for a particular MS-DOS device name. The function can also
1819 * obtain a list of all existing MS-DOS device names.
1820 * MS-DOS device names are stored as symbolic links in the Windows NT
1821 * object name space. The code that converts an MS-DOS path into a
1822 * corresponding Windows NT path uses these symbolic links to map
1823 * MS-DOS devices and drive letters. The QueryDosDevice function
1824 * provides a mechanism whereby a Win32-based application can query
1825 * the names of the symbolic links used to implement the MS-DOS device
1826 * namespace as well as the value of each specific symbolic link.
1827 * Parameters: LPCTSTR lpDeviceName address of MS-DOS device name string
1828 * LPTSTR lpTargetPath ddress of buffer for storing query results
1829 * DWORD ucchMax maximum storage capacity of buffer
1830 * Variables :
1831 * Result : pointer to lpTargetPath
1832 * Remark :
1833 * Status : UNTESTED STUB
1834 *
1835 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1836 *****************************************************************************/
1837
1838DWORD WIN32API QueryDosDeviceA(LPCTSTR lpDeviceName,
1839 LPTSTR lpTargetPath,
1840 DWORD ucchMax)
1841{
1842 dprintf(("Kernel32: QueryDosDeviceA(%s,%08xh,%08xh) not implemented.\n",
1843 lpDeviceName,
1844 lpTargetPath,
1845 ucchMax));
1846
1847 return (0);
1848}
1849
1850
1851/*****************************************************************************
1852 * Name : DWORD QueryDosDeviceW
1853 * Purpose : The QueryDosDevice function lets an application obtain information
1854 * about MS-DOS device names. The function can obtain the current
1855 * mapping for a particular MS-DOS device name. The function can also
1856 * obtain a list of all existing MS-DOS device names.
1857 * MS-DOS device names are stored as symbolic links in the Windows NT
1858 * object name space. The code that converts an MS-DOS path into a
1859 * corresponding Windows NT path uses these symbolic links to map
1860 * MS-DOS devices and drive letters. The QueryDosDevice function
1861 * provides a mechanism whereby a Win32-based application can query
1862 * the names of the symbolic links used to implement the MS-DOS device
1863 * namespace as well as the value of each specific symbolic link.
1864 * Parameters: LPCTSTR lpDeviceName address of MS-DOS device name string
1865 * LPTSTR lpTargetPath ddress of buffer for storing query results
1866 * DWORD ucchMax maximum storage capacity of buffer
1867 * Variables :
1868 * Result : pointer to lpTargetPath
1869 * Remark :
1870 * Status : UNTESTED STUB
1871 *
1872 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1873 *****************************************************************************/
1874
1875DWORD WIN32API QueryDosDeviceW(LPCWSTR lpDeviceName,
1876 LPWSTR lpTargetPath,
1877 DWORD ucchMax)
1878{
1879 dprintf(("Kernel32: QueryDosDeviceW(%s,%08xh,%08xh) not implemented.\n",
1880 lpDeviceName,
1881 lpTargetPath,
1882 ucchMax));
1883
1884 return (0);
1885}
1886
1887
1888/*****************************************************************************
1889 * Name : DWORD ReadProcessMemory
1890 * Purpose : The ReadProcessMemory function reads memory in a specified process.
1891 * The entire area to be read must be accessible, or the operation fails.
1892 * Parameters: HANDLE hProcess handle of the process whose memory is read
1893 * LPCVOID lpBaseAddress address to start reading
1894 * LPVOID lpBuffer address of buffer to place read data
1895 * DWORD cbRead number of bytes to read
1896 * LPDWORD lpNumberOfBytesRead address of number of bytes read
1897 * Variables :
1898 * Result : TRUE / FALSE
1899 * Remark :
1900 * Status : UNTESTED STUB
1901 *
1902 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1903 *****************************************************************************/
1904
1905DWORD WIN32API ReadProcessMemory(HANDLE hProcess,
1906 LPCVOID lpBaseAddress,
1907 LPVOID lpBuffer,
1908 DWORD cbRead,
1909 LPDWORD lpNumberOfBytesRead)
1910{
1911 dprintf(("Kernel32: ReadProcessMemory(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
1912 hProcess,
1913 lpBaseAddress,
1914 lpBuffer,
1915 cbRead,
1916 lpNumberOfBytesRead));
1917 // FIXME: check this, if we ever run win32 binaries in different addressspaces
1918 // ... and add a sizecheck
1919 memcpy(lpBuffer,lpBaseAddress,cbRead);
1920 if (lpNumberOfBytesRead) *lpNumberOfBytesRead = cbRead;
1921 return TRUE;
1922}
1923
1924/*****************************************************************************
1925 * Name : DWORD WriteProcessMemory
1926 * Purpose : The WriteProcessMemory function writes memory in a specified
1927 * process. The entire area to be written to must be accessible,
1928 * or the operation fails.
1929 * Parameters: HANDLE hProcess handle of process whose memory is written to
1930 * LPVOID lpBaseAddress address to start writing to
1931 * LPVOID lpBuffer address of buffer to write data to
1932 * DWORD cbWrite number of bytes to write
1933 * LPDWORD lpNumberOfBytesWritten actual number of bytes written
1934 * Variables :
1935 * Result : TRUE / FALSE
1936 * Remark :
1937 * Status : UNTESTED STUB
1938 *
1939 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1940 *****************************************************************************/
1941
1942DWORD WIN32API WriteProcessMemory(HANDLE hProcess,
1943 LPCVOID lpBaseAddress,
1944 LPVOID lpBuffer,
1945 DWORD cbWrite,
1946 LPDWORD lpNumberOfBytesWritten)
1947{
1948 dprintf(("Kernel32: WriteProcessMemory(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
1949 hProcess,
1950 lpBaseAddress,
1951 lpBuffer,
1952 cbWrite,
1953 lpNumberOfBytesWritten));
1954
1955 // FIXME: check this, if we ever run win32 binaries in different addressspaces
1956 // ... and add a sizecheck
1957 memcpy((void*)lpBaseAddress,lpBuffer,cbWrite);
1958 if (lpNumberOfBytesWritten) *lpNumberOfBytesWritten = cbWrite;
1959 return TRUE;
1960}
1961
1962
1963/*****************************************************************************
1964 * Name : BOOL SetComputerNameA
1965 * Purpose : The SetComputerNameA function sets the computer name to be used
1966 * the next time the system is restarted.
1967 * Parameters: LPCTSTR lpszName address of new computer name
1968 * Variables :
1969 * Result : TRUE / FALSE
1970 * Remark :
1971 * Status : UNTESTED STUB
1972 *
1973 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1974 *****************************************************************************/
1975
1976BOOL WIN32API SetComputerNameA(LPCTSTR lpszName)
1977{
1978 dprintf(("Kernel32: SetComputerNameA(%s) not implemented.\n",
1979 lpszName));
1980
1981 return (FALSE);
1982}
1983
1984
1985/*****************************************************************************
1986 * Name : BOOL SetComputerNameW
1987 * Purpose : The SetComputerNameW function sets the computer name to be used
1988 * the next time the system is restarted.
1989 * Parameters: LPCTSTR lpszName address of new computer name
1990 * Variables :
1991 * Result : TRUE / FALSE
1992 * Remark :
1993 * Status : UNTESTED STUB
1994 *
1995 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1996 *****************************************************************************/
1997
1998BOOL WIN32API SetComputerNameW(LPCWSTR lpszName)
1999{
2000 dprintf(("Kernel32: SetComputerNameW(%s) not implemented.\n",
2001 lpszName));
2002
2003 return (FALSE);
2004}
2005
2006
2007/*****************************************************************************
2008 * Name : VOID SetFileApisToOEM
2009 * Purpose : The SetFileApisToOEM function causes a set of Win32 file functions
2010 * to use the OEM character set code page. This function is useful
2011 * for 8-bit console input and output operations.
2012 * Parameters: VOID
2013 * Variables :
2014 * Result :
2015 * Remark :
2016 * Status : UNTESTED STUB
2017 *
2018 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2019 *****************************************************************************/
2020
2021VOID WIN32API SetFileApisToOEM(VOID)
2022{
2023 dprintf(("Kernel32: SetFileApisToOEM() not implemented.\n"));
2024}
2025
2026
2027/*****************************************************************************
2028 * Name : BOOL SetHandleInformation
2029 * Purpose : The SetHandleInformation function sets certain properties of an
2030 * object handle. The information is specified as a set of bit flags.
2031 * Parameters: HANDLE hObject handle to an object
2032 * DWORD dwMask specifies flags to change
2033 * DWORD dwFlags specifies new values for flags
2034 * Variables :
2035 * Result : TRUE / FALSE
2036 * Remark :
2037 * Status : UNTESTED STUB
2038 *
2039 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2040 *****************************************************************************/
2041
2042BOOL WIN32API SetHandleInformation(HANDLE hObject,
2043 DWORD dwMask,
2044 DWORD dwFlags)
2045{
2046 dprintf(("KERNEL32: SetHandleInformation(%08xh,%08xh,%08xh) not implemented.\n",
2047 hObject,
2048 dwMask,
2049 dwFlags));
2050
2051 return (FALSE);
2052}
2053
2054
2055/*****************************************************************************
2056 * Name : BOOL SetMailslotInfo
2057 * Purpose : The SetMailslotInfo function sets the time-out value used by the
2058 * specified mailslot for a read operation.
2059 * Parameters: HANDLE hObject handle to a mailslot object
2060 * DWORD dwReadTimeout read time-out
2061 * Variables :
2062 * Result : TRUE / FALSE
2063 * Remark :
2064 * Status : UNTESTED STUB
2065 *
2066 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2067 *****************************************************************************/
2068
2069BOOL WIN32API SetMailslotInfo(HANDLE hObject,
2070 DWORD dwReadTimeout)
2071{
2072 dprintf(("KERNEL32: SetMailslotInfo(%08xh,%08xh) not implemented.\n",
2073 hObject,
2074 dwReadTimeout));
2075
2076 return (FALSE);
2077}
2078
2079
2080/*****************************************************************************
2081 * Name : BOOL SetSystemPowerState
2082 * Purpose : The SetSystemPowerState function suspends the system by shutting
2083 * power down. Depending on the ForceFlag parameter, the function
2084 * either suspends operation immediately or requests permission from
2085 * all applications and device drivers before doing so.
2086 * Parameters: BOOL fSuspend
2087 * BOOL fForce
2088 * Variables :
2089 * Result : TRUE / FALSE
2090 * Remark :
2091 * Status : UNTESTED STUB
2092 *
2093 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2094 *****************************************************************************/
2095
2096BOOL WIN32API SetSystemPowerState(BOOL fSuspend,
2097 BOOL fForce)
2098{
2099 dprintf(("KERNEL32: SetSystemPowerState(%08xh,%08xh) not implemented.\n",
2100 fSuspend,
2101 fForce));
2102
2103 return (FALSE);
2104}
2105
2106
2107/*****************************************************************************
2108 * Name : BOOL SetSystemTimeAdjustment
2109 * Purpose : The SetSystemTimeAdjustment function tells the system to enable
2110 * or disable periodic time adjustments to its time of day clock.
2111 * Such time adjustments are used to synchronize the time of day
2112 * with some other source of time information. When periodic time
2113 * adjustments are enabled, they are applied at each clock interrupt.
2114 * Parameters: DWORD dwTimeAdjustment
2115 * BOOL bTimeAdjustmentDisabled
2116 * Variables :
2117 * Result : TRUE / FALSE
2118 * Remark :
2119 * Status : UNTESTED STUB
2120 *
2121 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2122 *****************************************************************************/
2123
2124BOOL WIN32API SetSystemTimeAdjustment(DWORD dwTimeAdjustment,
2125 BOOL bTimeAdjustmentDisabled)
2126{
2127 dprintf(("KERNEL32: SetSystemTimeAdjustment(%08xh,%08xh) not implemented.\n",
2128 dwTimeAdjustment,
2129 bTimeAdjustmentDisabled));
2130
2131 return (FALSE);
2132}
2133
2134
2135/*****************************************************************************
2136 * Name : DWORD SetTapeParameters
2137 * Purpose : The SetTapeParameters function either specifies the block size
2138 * of a tape or configures the tape device.
2139 * Parameters: HANDLE hDevice handle of open device
2140 * DWORD dwOperation type of information to set
2141 * LPVOID lpTapeInformation address of buffer with information to set
2142 * Variables :
2143 * Result : API returncode
2144 * Remark :
2145 * Status : UNTESTED STUB
2146 *
2147 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2148 *****************************************************************************/
2149
2150BOOL WIN32API SetTapeParameters(HANDLE hDevice,
2151 DWORD dwOperation,
2152 LPVOID lpTapeInformation)
2153{
2154 dprintf(("KERNEL32: SetTapeParameters(%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
2155 hDevice,
2156 dwOperation,
2157 lpTapeInformation));
2158
2159 return (ERROR_NOT_SUPPORTED);
2160}
2161
2162
2163/*****************************************************************************
2164 * Name : DWORD SetTapePosition
2165 * Purpose : The SetTapePosition sets the tape position on the specified device.
2166 * Parameters: HANDLE hDevice handle of open device
2167 * DWORD dwPositionMethod type of positioning to perform
2168 * DWORD dwPartition new tape partition
2169 * DWORD dwOffsetLow low-order 32 bits of tape position
2170 * DWORD dwOffsetHigh high-order 32 bits of tape position
2171 * BOOL bImmediate return after operation begins
2172 * Variables :
2173 * Result : API returncode
2174 * Remark :
2175 * Status : UNTESTED STUB
2176 *
2177 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2178 *****************************************************************************/
2179
2180BOOL WIN32API SetTapePosition(HANDLE hDevice,
2181 DWORD dwPositionMethod,
2182 DWORD dwPartition,
2183 DWORD dwOffsetLow,
2184 DWORD dwOffsetHigh,
2185 BOOL bImmediate)
2186{
2187 dprintf(("KERNEL32: SetTapePosition(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
2188 hDevice,
2189 dwPositionMethod,
2190 dwPartition,
2191 dwOffsetLow,
2192 dwOffsetHigh,
2193 bImmediate));
2194
2195 return (ERROR_NOT_SUPPORTED);
2196}
2197
2198
2199/*****************************************************************************
2200 * Name : DWORD SetThreadAffinityMask
2201 * Purpose : The SetThreadAffinityMask function sets a processor affinity
2202 * mask for a specified thread.
2203 * A thread affinity mask is a bit vector in which each bit
2204 * represents the processors that a thread is allowed to run on.
2205 * A thread affinity mask must be a proper subset of the process
2206 * affinity mask for the containing process of a thread. A thread
2207 * is only allowed to run on the processors its process is allowed to run on.
2208 * Parameters: HANDLE hThread handle to the thread of interest
2209 * DWORD dwThreadAffinityMask a thread affinity mask
2210 * Variables :
2211 * Result : TRUE / FALSE
2212 * Remark :
2213 * Status : UNTESTED STUB
2214 *
2215 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2216 *****************************************************************************/
2217
2218DWORD WIN32API SetThreadAffinityMask(HANDLE hThread,
2219 DWORD dwThreadAffinityMask)
2220{
2221 dprintf(("KERNEL32: SetThreadAffinityMask(%08xh,%08xh) not implemented.\n",
2222 hThread,
2223 dwThreadAffinityMask));
2224
2225 return (0);
2226}
2227
2228
2229
2230/*****************************************************************************
2231 * Name : BOOL UpdateResourceA
2232 * Purpose : The UpdateResourceA function adds, deletes, or replaces a resource
2233 * in an executable file.
2234 * Parameters: HANDLE hUpdateFile update-file handle
2235 * LPCTSTR lpszType address of resource type to update
2236 * LPCTSTR lpszName address of resource name to update
2237 * WORD IDLanguage language identifier of resource
2238 * LPVOID lpvData address of resource data
2239 * DWORD cbData length of resource data, in bytes
2240 * Variables :
2241 * Result : TRUE / FALSE
2242 * Remark :
2243 * Status : UNTESTED STUB
2244 *
2245 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2246 *****************************************************************************/
2247
2248BOOL WIN32API UpdateResourceA(HANDLE hUpdateFile,
2249 LPCTSTR lpszType,
2250 LPCTSTR lpszName,
2251 WORD IDLanguage,
2252 LPVOID lpvData,
2253 DWORD cbData)
2254{
2255 dprintf(("KERNEL32: UpdateResourceA(%08xh,%s,%s,%08xh,%08xh,%08xh) not implemented.\n",
2256 hUpdateFile,
2257 lpszType,
2258 lpszName,
2259 IDLanguage,
2260 lpvData,
2261 cbData));
2262
2263 return (FALSE);
2264}
2265
2266
2267/*****************************************************************************
2268 * Name : BOOL UpdateResourceW
2269 * Purpose : The UpdateResourceW function adds, deletes, or replaces a resource
2270 * in an executable file.
2271 * Parameters: HANDLE hUpdateFile update-file handle
2272 * LPCTSTR lpszType address of resource type to update
2273 * LPCTSTR lpszName address of resource name to update
2274 * WORD IDLanguage language identifier of resource
2275 * LPVOID lpvData address of resource data
2276 * DWORD cbData length of resource data, in bytes
2277 * Variables :
2278 * Result : TRUE / FALSE
2279 * Remark :
2280 * Status : UNTESTED STUB
2281 *
2282 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2283 *****************************************************************************/
2284
2285BOOL WIN32API UpdateResourceW(HANDLE hUpdateFile,
2286 LPCWSTR lpszType,
2287 LPCWSTR lpszName,
2288 WORD IDLanguage,
2289 LPVOID lpvData,
2290 DWORD cbData)
2291{
2292 dprintf(("KERNEL32: UpdateResourceW(%08xh,%s,%s,%08xh,%08xh,%08xh) not implemented.\n",
2293 hUpdateFile,
2294 lpszType,
2295 lpszName,
2296 IDLanguage,
2297 lpvData,
2298 cbData));
2299
2300 return (FALSE);
2301}
2302
2303/*****************************************************************************
2304 * Name : BOOL WriteTapemark
2305 * Purpose : The WriteTapemark function writes a specified number of filemarks,
2306 * setmarks, short filemarks, or long filemarks to a tape device.
2307 * These tapemarks divide a tape partition into smaller areas.
2308 * Parameters: HANDLE hDevice handle of open device
2309 * DWORD dwTapemarkType type of tapemarks to write
2310 * DWORD dwTapemarkCount number of tapemarks to write
2311 * BOOL bImmediate return after write begins
2312 * Variables :
2313 * Result : API returncode
2314 * Remark :
2315 * Status : UNTESTED STUB
2316 *
2317 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2318 *****************************************************************************/
2319
2320DWORD WIN32API WriteTapemark(HANDLE hDevice,
2321 DWORD dwTapemarkType,
2322 DWORD dwTapemarkCount,
2323 BOOL bImmediate)
2324{
2325 dprintf(("KERNEL32: WriteTapemark(%08xh,%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
2326 hDevice,
2327 dwTapemarkType,
2328 dwTapemarkCount,
2329 bImmediate));
2330
2331 return (ERROR_NOT_SUPPORTED);
2332}
2333
2334
2335/*****************************************************************************
2336 * Name : DWORD CmdBatNotification
2337 * Purpose : Unknown, used by /winnt/cmd.exe
2338 * Parameters: Unknown (wrong)
2339 * Variables :
2340 * Result : Unknown
2341 * Remark :
2342 * Status : UNTESTED STUB
2343 *
2344 * Author : Patrick Haller [Tue, 1999/06/08 21:44]
2345 *****************************************************************************/
2346
2347DWORD WIN32API CmdBatNotification(DWORD x1)
2348{
2349 dprintf(("KERNEL32: CmdBatNotification(%08xh) not implemented\n",
2350 x1));
2351
2352 return (0);
2353}
2354
2355
2356/*****************************************************************************
2357 * Name : DWORD GetVDMCurrentDirectories
2358 * Purpose : Unknown, used by /winnt/cmd.exe
2359 * Parameters: Unknown (wrong)
2360 * Variables :
2361 * Result : Unknown
2362 * Remark :
2363 * Status : UNTESTED STUB
2364 *
2365 * Author : Patrick Haller [Tue, 1999/06/08 21:44]
2366 *****************************************************************************/
2367
2368DWORD WIN32API GetVDMCurrentDirectories(DWORD x1)
2369{
2370 dprintf(("KERNEL32: GetVDMCurrentDirectories(%08xh) not implemented\n",
2371 x1));
2372
2373 return (0);
2374}
2375
2376
2377/*****************************************************************************
2378 * Name : DWORD SetThreadPriorityBoost
2379 * Purpose : Unknown
2380 * Parameters: Unknown (wrong)
2381 * Variables :
2382 * Result : Unknown
2383 * Remark :
2384 * Status : UNTESTED STUB
2385 *
2386 * Author : Patrick Haller [Tue, 1999/06/08 21:44]
2387 *****************************************************************************/
2388
2389DWORD WIN32API SetThreadPriorityBoost(DWORD x1,
2390 DWORD x2)
2391{
2392 dprintf(("KERNEL32: SetThreadPriorityBoost(%08xh, %08xh) not implemented\n",
2393 x1,
2394 x2));
2395
2396 return (0);
2397}
2398
2399/*****************************************************************************
2400 * Name : ???
2401 * Purpose : Unknown (used by explorer.exe)
2402 * Parameters: Unknown (wrong)
2403 * Variables :
2404 * Result : Unknown
2405 * Remark :
2406 * Status : UNTESTED STUB
2407 *
2408 * Author : Christoph Bratschi [Wed, 2000/03/29 19:47]
2409 *****************************************************************************/
2410
2411VOID WIN32API KERNEL32_99(DWORD x)
2412{
2413 dprintf(("KERNEL32: Unknown API KERNEL32.99\n"));
2414}
2415
2416
Note: See TracBrowser for help on using the repository browser.