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

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

added exception stack dump code; GetLocaleInfoA fixes

File size: 107.5 KB
Line 
1/* $Id: stubs.cpp,v 1.22 2000-05-02 20:53: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 : BOOL WIN32API CopyFileExA
536 * Purpose : The CopyFileExA function copies an existing file to a new file.
537 * This function preserves extended attributes, OLE structured
538 * storage, NTFS alternate data streams, and file attributes.
539 * Security attributes for the existing file are not copied to
540 * the new file.
541 * Parameters: LPCSTR lpExistingFileName pointer to name of an existing file
542 * LPCSTR lpNewFileName pointer to filename to copy to
543 * LPPROGRESS_ROUTINE lpProgressRoutine pointer to the callback function
544 * LPVOID lpData to be passed to the callback function
545 * LPBOOL pbCancel flag that can be used to cancel the operation
546 * DWORD dwCopyFlags flags that specify how the file is copied
547 * Variables :
548 * Result : f the function succeeds, the return value is nonzero.
549 * If the function fails, the return value is zero.
550 * To get extended error information call GetLastError.
551 * Remark :
552 * Status : UNTESTED STUB
553 *
554 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
555 *****************************************************************************/
556
557BOOL WIN32API CopyFileExA( LPCSTR lpExistingFileName,
558 LPCSTR lpNewFileName,
559 LPPROGRESS_ROUTINE lpProgressRoutine,
560 LPVOID lpData,
561 LPBOOL pbCancel,
562 DWORD dwCopyFlags)
563{
564
565 dprintf(("KERNEL32: CopyFileExA(%08x,%08x,%08x,%08x,%08x,%08x) not implemented\n",
566 lpExistingFileName,
567 lpNewFileName,
568 lpProgressRoutine,
569 lpData,
570 pbCancel,
571 dwCopyFlags
572 ));
573
574 return (FALSE);
575}
576
577
578/*****************************************************************************
579 * Name : BOOL WIN32API CopyFileExW
580 * Purpose : The CopyFileExW function copies an existing file to a new file.
581 * This function preserves extended attributes, OLE structured
582 * storage, NTFS alternate data streams, and file attributes.
583 * Security attributes for the existing file are not copied to
584 * the new file.
585 * Parameters: LPCWSTR lpExistingFileName pointer to name of an existing file
586 * LPCWSTR lpNewFileName pointer to filename to copy to
587 * LPPROGRESS_ROUTINE lpProgressRoutine pointer to the callback function
588 * LPVOID lpData to be passed to the callback function
589 * LPBOOL pbCancel flag that can be used to cancel the operation
590 * DWORD dwCopyFlags flags that specify how the file is copied
591 * Variables :
592 * Result : f the function succeeds, the return value is nonzero.
593 * If the function fails, the return value is zero.
594 * To get extended error information call GetLastError.
595 * Remark :
596 * Status : UNTESTED STUB
597 *
598 * Author : Markus Montkowski [Thu, 1998/05/19 11:46]
599 *****************************************************************************/
600
601BOOL WIN32API CopyFileExW( LPCWSTR lpExistingFileName,
602 LPCWSTR lpNewFileName,
603 LPPROGRESS_ROUTINE lpProgressRoutine,
604 LPVOID lpData,
605 LPBOOL pbCancel,
606 DWORD dwCopyFlags)
607{
608
609 dprintf(("KERNEL32: CopyFileExW(%08x,%08x,%08x,%08x,%08x,%08x) not implemented\n",
610 lpExistingFileName,
611 lpNewFileName,
612 lpProgressRoutine,
613 lpData,
614 pbCancel,
615 dwCopyFlags
616 ));
617
618 return (FALSE);
619}
620
621/*****************************************************************************
622 * Name : BOOL WIN32API CreateDirectoryExA
623 * Purpose : The CreateDirectoryExA function creates a new directory with a
624 * specified path that retains the attributes of a specified
625 * template directory. If the underlying file system supports
626 * security on files and directories, the function applies a
627 * specified security descriptor to the new directory.
628 * The new directory retains the other attributes of the specified
629 * template directory. Note that CreateDirectoryEx has a template
630 * parameter, while CreateDirectory does not.
631 * Parameters: LPCSTR lpTemplateDirectory pointer to path string of template
632 * directory
633 * LPCSTR lpNewDirectory pointer to path string of directory
634 * to create
635 * LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security
636 * descriptor
637 *
638 * Variables :
639 * Result : If the function succeeds, the return value is nonzero.
640 * If the function fails, the return value is zero.
641 * To get extended error information, call GetLastError.
642 * Remark :
643 * Status : UNTESTED STUB
644 *
645 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
646 *****************************************************************************/
647
648BOOL WIN32API CreateDirectoryExA( LPCSTR lpTemplateDirectory,
649 LPCSTR lpNewDirectory,
650 LPSECURITY_ATTRIBUTES lpSecurityAttributes)
651{
652
653 dprintf(("KERNEL32:CreateDirectoryExA(%08x,%08x,%08x) not implemented\n",
654 lpTemplateDirectory,lpNewDirectory,lpSecurityAttributes
655 ));
656
657 return (FALSE);
658}
659
660/*****************************************************************************
661 * Name : BOOL WIN32API CreateDirectoryExW
662 * Purpose : The CreateDirectoryExW function creates a new directory with a
663 * specified path that retains the attributes of a specified
664 * template directory. If the underlying file system supports
665 * security on files and directories, the function applies a
666 * specified security descriptor to the new directory.
667 * The new directory retains the other attributes of the specified
668 * template directory. Note that CreateDirectoryEx has a template
669 * parameter, while CreateDirectory does not.
670 * Parameters: LPCWSTR lpTemplateDirectory pointer to path string of template
671 * directory
672 * LPCWSTR lpNewDirectory pointer to path string of directory
673 * to create
674 * LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security
675 * descriptor
676 *
677 * Variables :
678 * Result : If the function succeeds, the return value is nonzero.
679 * If the function fails, the return value is zero.
680 * To get extended error information, call GetLastError.
681 * Remark :
682 * Status : UNTESTED STUB
683 *
684 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
685 *****************************************************************************/
686
687BOOL WIN32API CreateDirectoryExW( LPCWSTR lpTemplateDirectory,
688 LPCWSTR lpNewDirectory,
689 LPSECURITY_ATTRIBUTES lpSecurityAttributes)
690{
691
692 dprintf(("KERNEL32:CreateDirectoryExW(%08x,%08x,%08x) not implemented\n",
693 lpTemplateDirectory,lpNewDirectory,lpSecurityAttributes
694 ));
695
696 return (FALSE);
697}
698
699/*****************************************************************************
700 * Name : LPVOID WIN32API CreateFiber
701 * Purpose : The CreateFiber function allocates a fiber object, assigns it a
702 * stack, and sets up execution to begin at the specified
703 * start address, typically the fiber function.
704 * This function does not schedule the fiber.
705 * Parameters: DWORD dwStackSize initial thread stack size, in bytes
706 * LPFIBER_START_ROUTINE lpStartAddress pointer to fiber function
707 * LPVOID lpParameter argument for new fiber
708 * Variables :
709 * Result : If the function succeeds, the return value is the address of
710 * the fiber.
711 * If the function fails, the return value is NULL.
712 * Remark : Before a thread can schedule a fiber using the SwitchToFiber
713 * function, it must call the ConvertThreadToFiber function so there
714 * is a fiber associated with the thread.
715 * The fiber function is of type FIBER_START_ROUTINE.
716 * It accepts a single value of type PVOID (fiber data) and does not
717 * return a value. The prototype for this function is as follows:
718 *
719 * VOID WINAPI FiberFunc( PVOID lpParameter );
720 *
721 * Status : UNTESTED STUB
722 *
723 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
724 *****************************************************************************/
725
726LPVOID WIN32API CreateFiber( DWORD dwStackSize,
727 LPFIBER_START_ROUTINE lpStartAddress,
728 LPVOID lpParameter)
729{
730
731 dprintf(("KERNEL32:CreateFiber(%08x,%08x,%08x) not implemented\n",
732 dwStackSize, lpStartAddress,lpParameter
733 ));
734
735 return (NULL);
736}
737
738
739/*****************************************************************************
740 * Name : HANDLE WIN32API CreateIoCompletionPort
741 * Purpose : The CreateIoCompletionPort function can associate an instance of
742 * an opened file with a newly created or an existing input/output
743 * completion port; or it can create an input/output completion port
744 * without associating it with a file.
745 * Associating an instance of an opened file with an input/output
746 * completion port lets an application receive notification of the
747 * completion of asynchronous input/output operations involving that
748 * file.
749 * Parameters: HANDLE FileHandle file handle to associate with I/O
750 * completion port. Must be created
751 * with flag FILE_FLAG_OVERLAPPED !
752 * HANDLE ExistingCompletionPort optional handle to existing
753 * I/O completion port
754 * DWORD CompletionKey per-file completion key for
755 * I/O completion packets
756 * DWORD NumberOfConcurrentThreads number of threads allowed to
757 * execute concurrently
758 * Variables :
759 * Result : If the function succeeds, the return value is the handle to the
760 * I/O completion port that is associated with the specified file.
761 * This return value is not NULL.
762 * If the function fails, the return value is NULL.
763 * Remark : The Win32 I/O system can be instructed to send I/O completion
764 * notification packets to input/output completion ports, where they
765 * are queued up. The CreateIoCompletionPort function provides a
766 * mechanism for this.
767 * When you perform an input/output operation with a file handle
768 * that has an associated input/output completion port, the
769 * I/O system sends a completion notification packet to the
770 * completion port when the I/O operation completes.
771 * The I/O completion port places the completion packet in a
772 * first-in-first-out queue.
773 * Use the GetQueuedCompletionStatus function to retrieve these
774 * queued I/O completion packets.
775 * Threads in the same process can use the PostQueuedCompletionStatus
776 * function to place I/O completion notification packets in a
777 * completion port's queue. This allows you to use the port to
778 * receive communications from other threads of the process,
779 * in addition to receiving I/O completion notification packets
780 * from the Win32 I/O system.
781 * Status : UNTESTED STUB
782 *
783 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
784 *****************************************************************************/
785
786HANDLE WIN32API CreateIoCompletionPort( HANDLE FileHandle,
787 HANDLE ExistingCompletionPort,
788 DWORD CompletionKey,
789 DWORD NumberOfConcurrentThreads)
790{
791
792 dprintf(("KERNEL32: CreateIoCompletionPort(%08x,%08x,%08x,%08x) not implemented\n",
793 FileHandle, ExistingCompletionPort, CompletionKey,
794 NumberOfConcurrentThreads
795 ));
796
797 return (NULL);
798}
799/*****************************************************************************
800 * Name : HANDLE WIN32API CreateMailslotA
801 * Purpose : The CreateMailslot function creates a mailslot with the specified
802 * name and returns a handle that a mailslot server can use to
803 * perform operations on the mailslot. The mailslot is local to the
804 * computer that creates it. An error occurs if a mailslot with
805 * the specified name already exists.
806 * Parameters: LPCSTR lpName pointer to string for mailslot name
807 * DWORD nMaxMessageSize maximum message size
808 * DWORD lReadTimeout milliseconds before read time-out
809 * LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security structure
810 * Variables :
811 * Result : If the function succeeds, the return value is a handle to
812 * the mailslot, for use in server mailslot operations.
813 * If the function fails, the return value is INVALID_HANDLE_VALUE.
814 * Remark :
815 * Status : UNTESTED STUB
816 *
817 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
818 *****************************************************************************/
819
820HANDLE WIN32API CreateMailslotA(LPCSTR lpName, DWORD nMaxMessageSize,
821 DWORD lReadTimeout,
822 LPSECURITY_ATTRIBUTES lpSecurityAttributes)
823{
824
825 dprintf(("KERNEL32: CreateMailslotA(%08x,%08x,%08x,%08x) not implemented - INVALID_HANDLE_VALUE\n",
826 lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes
827 ));
828
829 return (INVALID_HANDLE_VALUE);
830}
831
832/*****************************************************************************
833 * Name : HANDLE WIN32API CreateMailslotW
834 * Purpose : The CreateMailslot function creates a mailslot with the specified
835 * name and returns a handle that a mailslot server can use to
836 * perform operations on the mailslot. The mailslot is local to the
837 * computer that creates it. An error occurs if a mailslot with
838 * the specified name already exists.
839 * Parameters: LPCWSTR lpName pointer to string for mailslot name
840 * DWORD nMaxMessageSize maximum message size
841 * DWORD lReadTimeout milliseconds before read time-out
842 * LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security
843 * structure
844 * Variables :
845 * Result : If the function succeeds, the return value is a handle to
846 * the mailslot, for use in server mailslot operations.
847 * If the function fails, the return value is INVALID_HANDLE_VALUE.
848 * Remark :
849 * Status : UNTESTED STUB
850 *
851 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
852 *****************************************************************************/
853
854HANDLE WIN32API CreateMailslotW(LPCWSTR lpName, DWORD nMaxMessageSize,
855 DWORD lReadTimeout,
856 LPSECURITY_ATTRIBUTES lpSecurityAttributes)
857{
858
859 dprintf(("KERNEL32: CreateMailslotW(%08x,%08x,%08x,%08x) not implemented - INVALID_HANDLE_VALUE\n",
860 lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes
861 ));
862
863 return (INVALID_HANDLE_VALUE);
864}
865
866/*****************************************************************************
867 * Name : HANDLE WIN32API CreateRemoteThread
868 * Purpose : The CreateRemoteThread function creates a thread that runs in
869 * the address space of another process.
870 * Parameters: HANDLE hProcess handle to process to create thread in
871 * LPSECURITY_ATTRIBUTES lpThreadAttributes pointer to thread
872 * security attributes
873 * DWORD dwStackSize initial thread stack size, in bytes
874 * LPTHREAD_START_ROUTINE lpStartAddress pointer to thread function
875 * LPVOID lpParameter pointer to argument for new thread
876 * DWORD dwCreationFlags creation flags
877 * LPDWORD lpThreadId pointer to returned thread identifier
878 * Variables :
879 * Result : If the function succeeds, the return value is a handle to
880 * the new thread.
881 * If the function fails, the return value is NULL.
882 * Remark :
883 * Status : UNTESTED STUB
884 *
885 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
886 *****************************************************************************/
887
888HANDLE WIN32API CreateRemoteThread( HANDLE hProcess,
889 LPSECURITY_ATTRIBUTES lpThreadAttributes,
890 DWORD dwStackSize,
891 LPTHREAD_START_ROUTINE lpStartAddress,
892 LPVOID lpParameter,DWORD dwCreationFlags,
893 LPDWORD lpThreadId )
894{
895
896 dprintf(("KERNEL32: CreateRemoteThread(%08x,%08x,%08x,%08x,%08x,%08x,%08x) not implemented\n",
897 hProcess, lpThreadAttributes, dwStackSize, lpStartAddress,
898 lpParameter, dwCreationFlags, lpThreadId
899 ));
900
901 return (NULL);
902}
903/*****************************************************************************
904 * Name : DWORD WIN32API CreateTapePartition
905 * Purpose : The CreateTapePartition function reformats a tape.
906 * Parameters: HANDLE hDevice handle to open device
907 * DWORD dwPartitionMethode type of new partition
908 * DWORD dwCount number of new partitions to create
909 * DWORD dwSize size of new partition, in megabytes
910 * Variables :
911 * Result : If the function succeeds, the return value is NO_ERROR.
912 * If the function fails, it may return one of the following
913 * error codes:
914 * Error Description
915 * ERROR_BEGINNING_OF_MEDIA An attempt to access data before
916 * the beginning-of-medium marker failed.
917 * ERROR_BUS_RESET A reset condition was detected on the bus.
918 * ERROR_END_OF_MEDIA The end-of-tape marker was reached
919 * during an operation.
920 * ERROR_FILEMARK_DETECTED A filemark was reached during an operation.
921 * ERROR_SETMARK_DETECTED A setmark was reached during an operation.
922 * ERROR_NO_DATA_DETECTED The end-of-data marker was reached
923 * during an operation.
924 * ERROR_PARTITION_FAILURE The tape could not be partitioned.
925 * ERROR_INVALID_BLOCK_LENGTH The block size is incorrect on a
926 * new tape in a multivolume partition.
927 * ERROR_DEVICE_NOT_PARTITIONED The partition information could not
928 * be found when a tape was being loaded.
929 * ERROR_MEDIA_CHANGED The tape that was in the drive has
930 * been replaced or removed.
931 * ERROR_NO_MEDIA_IN_DRIVE There is no media in the drive.
932 * ERROR_NOT_SUPPORTED The tape driver does not support a
933 * requested function.
934 * ERROR_UNABLE_TO_LOCK_MEDIA An attempt to lock the ejection
935 * mechanism failed.
936 * ERROR_UNABLE_TO_UNLOAD_MEDIA An attempt to unload the tape failed.
937 * ERROR_WRITE_PROTECT The media is write protected.
938 * Remark : Creating partitions reformats the tape. All previous information
939 * recorded on the tape is destroyed.
940 * Errorcodes are defined in winerror.h
941 * Status : UNTESTED STUB
942 *
943 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
944 *****************************************************************************/
945
946DWORD WIN32API CreateTapePartition( HANDLE hDevice, DWORD dwPartitionMethod,
947 DWORD dwCount, DWORD dwSize)
948{
949
950 dprintf(("KERNEL32: CreateTapePartition(%08x,%08x,%08x,%08x) not implemented - ERROR_NOT_SUPPORTED\n",
951 hDevice, dwPartitionMethod, dwCount, dwSize
952 ));
953
954 return (ERROR_NOT_SUPPORTED);
955}
956/*****************************************************************************
957 * Name : HANDLE WIN23API CreateWaitableTimerA
958 * Purpose : The CreateWaitableTimerA function creates a "waitable" timer object.
959 * Parameters: LPSECURITY_ATTRIBUTES lpTimerAttributes pointer to security attributes
960 * BOOL bManualReset flag for manual reset state
961 * LPCTSTR lpTimerName pointer to timer object name
962 * Variables :
963 * Result : If the function succeeds, the return value is a handle to the
964 * timer object. If the named timer object exists before the
965 * function call, GetLastError returns ERROR_ALREADY_EXISTS.
966 * Otherwise, GetLastError returns zero.
967 * If the function fails, the return value is NULL
968 * Remark :
969 * Status : UNTESTED STUB
970 *
971 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
972 *****************************************************************************/
973
974HANDLE WIN32API CreateWaitableTimerA( LPSECURITY_ATTRIBUTES lpTimerAttributes,
975 BOOL bManualReset, LPCSTR lpTimerName)
976{
977
978 dprintf(("KERNEL32: CreateWaitableTimer(%08x,%08x,%08x) not implemented\n",
979 lpTimerAttributes, bManualReset, lpTimerName
980 ));
981
982 return (NULL);
983}
984
985/*****************************************************************************
986 * Name : HANDLE WIN23API CreateWaitableTimerW
987 * Purpose : The CreateWaitableTimerW function creates a "waitable" timer object.
988 * Parameters: LPSECURITY_ATTRIBUTES lpTimerAttributes pointer to security attributes
989 * BOOL bManualReset flag for manual reset state
990 * LPCTSTR lpTimerName pointer to timer object name
991 * Variables :
992 * Result : If the function succeeds, the return value is a handle to the
993 * timer object. If the named timer object exists before the
994 * function call, GetLastError returns ERROR_ALREADY_EXISTS.
995 * Otherwise, GetLastError returns zero.
996 * If the function fails, the return value is NULL
997 * Remark :
998 * Status : UNTESTED STUB
999 *
1000 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1001 *****************************************************************************/
1002
1003HANDLE WIN32API CreateWaitableTimerW( LPSECURITY_ATTRIBUTES lpTimerAttributes,
1004 BOOL bManualReset, LPCWSTR lpTimerName)
1005{
1006
1007 dprintf(("KERNEL32: CreateWaitableTimer(%08x,%08x,%08x) not implemented\n",
1008 lpTimerAttributes, bManualReset, lpTimerName
1009 ));
1010
1011 return (NULL);
1012}
1013
1014/*****************************************************************************
1015 * Name : BOOL WIN32API DebugActiveProcess
1016 * Purpose : The DebugActiveProcess function allows a debugger to attach to
1017 * an active process and then debug it.
1018 * Parameters: DWORD dwProcessId process to be debugged
1019 * Variables :
1020 * Result : If the function succeeds, the return value is nonzero.
1021 * If the function fails, the return value is zero
1022 * Remark :
1023 * Status : UNTESTED STUB
1024 *
1025 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1026 *****************************************************************************/
1027
1028BOOL WIN32API DebugActiveProcess(DWORD dwProcessId)
1029{
1030
1031 dprintf(("KERNEL32:DebugActiveProcess(%08x) not implemented\n",
1032 dwProcessId
1033 ));
1034
1035 return (FALSE);
1036}
1037
1038/*****************************************************************************
1039 * Name : BOOL WIN32API DefineDosDeviceA
1040 * Purpose : The DefineDosDeviceA function lets an application define,
1041 * redefine, or delete MS-DOS device names.
1042 * MS-DOS device names are stored as symbolic links in the object
1043 * name space in 32-bit versions of Windows. The code that converts
1044 * an MS-DOS path into a corresponding path in 32-bit versions of
1045 * Windows uses these symbolic links to map MS-DOS devices and drive
1046 * letters. The DefineDosDevice function provides a mechanism
1047 * whereby a Win32-based application can modify the symbolic links
1048 * used to implement the MS-DOS device name space.
1049 * Parameters: DWORD dwFlags flags specifying aspects of device definition
1050 * LPCSTR lpDeviceName pointer to MS-DOS device name string
1051 * LPCSTR lpTargetPath pointer to MS-DOS or path string for
1052 * 32-bit Windows
1053 * Variables :
1054 * Result : If the function succeeds, the return value is nonzero.
1055 * If the function fails, the return value is zero
1056 * Remark :
1057 * Status : UNTESTED STUB
1058 *
1059 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1060 *****************************************************************************/
1061
1062BOOL WIN32API DefineDosDeviceA( DWORD dwFlags, LPCSTR lpDeviceName,
1063 LPCSTR lpTargetPath )
1064{
1065
1066 dprintf(("KERNEL32: DefineDosDeviceA(%08x,%08x,%08x) not implemented\n",
1067 dwFlags, lpDeviceName, lpTargetPath
1068 ));
1069
1070 return (FALSE);
1071}
1072
1073/*****************************************************************************
1074 * Name : BOOL WIN32API DefineDosDeviceW
1075 * Purpose : UNICODE version of DefineDosDeviceA
1076 * Parameters: DWORD dwFlags flags specifying aspects of device definition
1077 * LPCSTR lpDeviceName pointer to MS-DOS device name string
1078 * LPCSTR lpTargetPath pointer to MS-DOS or path string for
1079 * 32-bit Windows
1080 * Variables :
1081 * Result : If the function succeeds, the return value is nonzero.
1082 * If the function fails, the return value is zero
1083 * Remark :
1084 * Status : UNTESTED STUB
1085 *
1086 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1087 *****************************************************************************/
1088
1089BOOL WIN32API DefineDosDeviceW( DWORD dwFlags, LPCWSTR lpDeviceName,
1090 LPCWSTR lpTargetPath )
1091{
1092
1093 dprintf(("KERNEL32: DefineDosDeviceW(%08x,%08x,%08x) not implemented\n",
1094 dwFlags, lpDeviceName, lpTargetPath
1095 ));
1096
1097 return (FALSE);
1098}
1099
1100/*****************************************************************************
1101 * Name : VOID WIN32API DeleteFiber
1102 * Purpose : The DeleteFiber function deletes an existing fiber
1103 * Parameters: LPVOID lpFiber pointer to the fiber to delete
1104 * Variables :
1105 * Result : No returnvalue
1106 * Remark : The DeleteFiber function deletes all data associated with the
1107 * fiber. This data includes the stack, a subset of the registers,
1108 * and the fiber data. If the currently running fiber calls
1109 * DeleteFiber, the ExitThread function is called and the thread
1110 * terminates. If the currently running fiber is deleted by another
1111 * thread, the thread associated with the fiber is likely to
1112 * terminate abnormally because the fiber stack has been freed.
1113 * Status : UNTESTED STUB
1114 *
1115 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1116 *****************************************************************************/
1117
1118VOID WIN32API DeleteFiber(LPVOID lpFiber)
1119{
1120
1121 dprintf(("KERNEL32: DeleteFiber(%08x) not implemented\n",
1122 lpFiber
1123 ));
1124}
1125/*****************************************************************************
1126 * Name : BOOL WIN3API EndUpdateResourceA
1127 * Purpose : The EndUpdateResourceA function ends a resource update
1128 * in an executable file.
1129 * Parameters: HANDLE hUpdate update-file handle
1130 * BOOL fDiscard write flag
1131 * Variables :
1132 * Result : If the function succeeds and the accumulated resource
1133 * modifications specified by calls to the UpdateResource function
1134 * are written to the specified executable file,
1135 * the return value is nonzero.
1136 * If the function fails, the return value is zero
1137 * Remark :
1138 * Status : UNTESTED STUB
1139 *
1140 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1141 *****************************************************************************/
1142
1143BOOL WIN32API EndUpdateResourceA(HANDLE hUpdate,BOOL fDiscard)
1144{
1145
1146 dprintf(("KERNEL32:EndUpdateResourceA(%08x,%08x)not implemented\n",
1147 hUpdate, fDiscard
1148 ));
1149
1150 return (FALSE);
1151}
1152
1153/*****************************************************************************
1154 * Name : BOOL WIN3API EndUpdateResourceW
1155 * Purpose : The EndUpdateResourceW function ends a resource update
1156 * in an executable file.
1157 * Parameters: HANDLE hUpdate update-file handle
1158 * BOOL fDiscard write flag
1159 * Variables :
1160 * Result : If the function succeeds and the accumulated resource
1161 * modifications specified by calls to the UpdateResource function
1162 * are written to the specified executable file,
1163 * the return value is nonzero.
1164 * If the function fails, the return value is zero
1165 * Remark :
1166 * Status : UNTESTED STUB
1167 *
1168 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1169 *****************************************************************************/
1170
1171BOOL WIN32API EndUpdateResourceW(HANDLE hUpdate,BOOL fDiscard)
1172{
1173
1174 dprintf(("KERNEL32:EndUpdateResourceW(%08x,%08x) not implemented\n",
1175 hUpdate, fDiscard
1176 ));
1177
1178 return (FALSE);
1179}
1180
1181/*****************************************************************************
1182 * Name : BOOL WIN32API EnumCalendarInfoA
1183 * Purpose : The EnumCalendarInfoA function enumerates calendar information
1184 * for a specified locale. The CalType parameter specifies the type
1185 * of calendar information to enumerate. The function returns the
1186 * specified calendar information for all applicable calendars for
1187 * the locale, or for a single requested calendar, depending on the
1188 * value of the Calendar parameter.
1189 * The EnumCalendarInfo function enumerates the calendar information
1190 * by calling an application-defined callback function. It passes
1191 * the callback function a pointer to a string buffer containing
1192 * the requested calendar information. This continues until either
1193 * the last applicable calendar is found or the callback function
1194 * returns FALSE.
1195 * Parameters: CALINFO_ENUMPROCA lpCalInfoEnumProc pointer to enumeration
1196 * callback function
1197 * LCID Locale locale whose calendar information is of interest
1198 * CALID Calendar calendar whose information is of interest
1199 * CALTYPE CalType type of calendar information of interest
1200 * Variables :
1201 * Result : If the function succeeds, the return value is nonzero.
1202 * If the function fails, the return value is zero
1203 * Remark :
1204 * Status : UNTESTED STUB
1205 *
1206 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1207 *****************************************************************************/
1208
1209BOOL WIN32API EnumCalendarInfoA(CALINFO_ENUMPROCA lpCalInfoEnumProc,
1210 LCID Locale,
1211 CALID Calendar,
1212 CALTYPE CalType)
1213{
1214
1215 dprintf(("KERNEL32: EnumCalendarInfoA(%08x,%08x,%08x,%08x)not implemented\n",
1216 lpCalInfoEnumProc,
1217 Locale,
1218 Calendar,
1219 CalType
1220 ));
1221
1222 return (FALSE);
1223}
1224
1225/*****************************************************************************
1226 * Name : BOOL WIN32API EnumCalendarInfoW
1227 * Purpose : The EnumCalendarInfoW function enumerates calendar information
1228 * for a specified locale. The CalType parameter specifies the type
1229 * of calendar information to enumerate. The function returns the
1230 * specified calendar information for all applicable calendars for
1231 * the locale, or for a single requested calendar, depending on the
1232 * value of the Calendar parameter.
1233 * The EnumCalendarInfo function enumerates the calendar information
1234 * by calling an application-defined callback function. It passes
1235 * the callback function a pointer to a string buffer containing
1236 * the requested calendar information. This continues until either
1237 * the last applicable calendar is found or the callback function
1238 * returns FALSE.
1239 * Parameters: CALINFO_ENUMPROCW lpCalInfoEnumProc pointer to enumeration
1240 * callback function
1241 * LCID Locale locale whose calendar information is of interest
1242 * CALID Calendar calendar whose information is of interest
1243 * CALTYPE CalType type of calendar information of interest
1244 * Variables :
1245 * Result : If the function succeeds, the return value is nonzero.
1246 * If the function fails, the return value is zero
1247 * Remark :
1248 * Status : UNTESTED STUB
1249 *
1250 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1251 *****************************************************************************/
1252
1253BOOL WIN32API EnumCalendarInfoW(CALINFO_ENUMPROCW lpCalInfoEnumProc,
1254 LCID Locale,
1255 CALID Calendar,
1256 CALTYPE CalType)
1257{
1258
1259 dprintf(("KERNEL32: EnumCalendarInfoW(%08x,%08x,%08x,%08x)not implemented\n",
1260 lpCalInfoEnumProc,
1261 Locale,
1262 Calendar,
1263 CalType
1264 ));
1265
1266 return (FALSE);
1267}
1268
1269/*****************************************************************************
1270 * Name : BOOL WIN32API EnumSystemCodePagesA
1271 * Purpose : The EnumSystemCodePagesA function enumerates the code pages that
1272 * are either installed on or supported by a system. The dwFlags
1273 * parameter determines whether the function enumerates installed
1274 * or supported code pages. The function enumerates the code pages
1275 * by passing code page identifiers, one at a time, to the specified
1276 * application-defined callback function. This continues until all
1277 * of the installed or supported code page identifiers have been
1278 * passed to the callback function, or the callback function
1279 * returns FALSE
1280 * Parameters: CODEPAGE_ENUMPROCA lpCodePageEnumProc pointer to enumeration
1281 * callback function
1282 * DWORD dwFlags indicates which code pages
1283 * to enumerate
1284 * Variables :
1285 * Result : If the function succeeds, the return value is nonzero.
1286 * If the function fails, the return value is zero
1287 * Remark :
1288 * Status : UNTESTED STUB
1289 *
1290 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1291 *****************************************************************************/
1292
1293BOOL WIN32API EnumSystemCodePagesA(CODEPAGE_ENUMPROCA lpCodePageEnumProc,
1294 DWORD dwFlags)
1295{
1296
1297 dprintf(("KERNEL32: EnumSystemCodePagesA(%08x,%08x) not implemented\n",
1298 lpCodePageEnumProc, dwFlags
1299 ));
1300
1301 return (FALSE);
1302}
1303
1304/*****************************************************************************
1305 * Name : BOOL WIN32API EnumSystemCodePagesW
1306 * Purpose : The EnumSystemCodePagesW function enumerates the code pages that
1307 * are either installed on or supported by a system. The dwFlags
1308 * parameter determines whether the function enumerates installed
1309 * or supported code pages. The function enumerates the code pages
1310 * by passing code page identifiers, one at a time, to the specified
1311 * application-defined callback function. This continues until all
1312 * of the installed or supported code page identifiers have been
1313 * passed to the callback function, or the callback function
1314 * returns FALSE
1315 * Parameters: CODEPAGE_ENUMPROCW lpCodePageEnumProc pointer to enumeration
1316 * callback function
1317 * DWORD dwFlags indicates which code pages
1318 * to enumerate
1319 * Variables :
1320 * Result : If the function succeeds, the return value is nonzero.
1321 * If the function fails, the return value is zero
1322 * Remark :
1323 * Status : UNTESTED STUB
1324 *
1325 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]
1326 *****************************************************************************/
1327
1328BOOL WIN32API EnumSystemCodePagesW(CODEPAGE_ENUMPROCW lpCodePageEnumProc,
1329 DWORD dwFlags)
1330{
1331
1332 dprintf(("KERNEL32: EnumSystemCodePagesA(%08x,%08x) not implemented\n",
1333 lpCodePageEnumProc, dwFlags
1334 ));
1335
1336 return (FALSE);
1337}
1338
1339/*****************************************************************************
1340 * Name : DWORD WIN32API EraseTape
1341 * Purpose : The EraseTape function erases all or part of a tape.
1342 * Parameters: HANDLE hDevice handle to open device
1343 * DWORD dwEraseType type of erasure to perform
1344 * BOOL bImmediate return after erase operation begins
1345 * Variables :
1346 * Result : If the function succeeds, the return value is NO_ERROR.
1347 * If the function fails, the return value is like in
1348 * CreateTapePartition
1349 * Remark : Some tape devices do not support certain tape operations. To de
1350 * termine your tape device's capabilities, see your tape device
1351 * documentation and use the GetTapeParameters function
1352 * Status : UNTESTED STUB
1353 *
1354 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1355 *****************************************************************************/
1356
1357DWORD WIN32API EraseTape( HANDLE hDevice, DWORD dwEraseType, BOOL bImmediate)
1358{
1359
1360 dprintf(("KERNEL32: EraseTape(%08x,%08x,%08x) not implemented - ERROR_NOT_SUPPORTED\n",
1361 hDevice, dwEraseType, bImmediate
1362 ));
1363
1364 return (ERROR_NOT_SUPPORTED);
1365}
1366
1367
1368/*****************************************************************************
1369 * Name : HANDLE WIN32API FindFirstFileExA
1370 * Purpose : The FindFirstFileExA function searches a directory for a file
1371 * whose name and attributes match those specified in the
1372 * function call.
1373 * Parameters: LPCSTR lpFileName pointer to the name of the file
1374 * to search for
1375 * FINDEX_INFO_LEVELS fInfoLevelId information level of the returned data
1376 * LPVOID lpFindFileData pointer to the returned information
1377 * FINDEX_SEARCH_OPS fSearchOp type of filtering to perform
1378 * LPVOID lpSearchFilter pointer to search criteria
1379 * DWORD dwAdditionalFlags additional search control flags
1380 * Variables :
1381 * Result : If the function succeeds, the return value is a search handle
1382 * that can be used in a subsequent call to the FindNextFile or
1383 * FindClose functions.
1384 * If the function fails, the return value is INVALID_HANDLE_VALUE
1385 * Remark :
1386 * Status : UNTESTED STUB
1387 *
1388 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1389 *****************************************************************************/
1390
1391HANDLE WIN32API FindFirstFileExA( LPCSTR lpFileName,
1392 FINDEX_INFO_LEVELS fInfoLevelId,
1393 LPVOID lpFindFileData,
1394 FINDEX_SEARCH_OPS fSearchOp,
1395 LPVOID lpSearchFilter,
1396 DWORD dwAdditionalFlags)
1397{
1398
1399 dprintf(("KERNEL32: FindFirstFileExA(%08x,%08x,%08x,%08x,%08x,%08x)not implemented - INVALID_HANDLE_VALUE\n",
1400 lpFileName,
1401 fInfoLevelId,
1402 lpFindFileData,
1403 fSearchOp,
1404 lpSearchFilter,
1405 dwAdditionalFlags
1406 ));
1407
1408 return (INVALID_HANDLE_VALUE);
1409}
1410
1411/*****************************************************************************
1412 * Name : HANDLE WIN32API FindFirstFileExW
1413 * Purpose : The FindFirstFileExW function searches a directory for a file
1414 * whose name and attributes match those specified in the
1415 * function call.
1416 * Parameters: LPCWSTR lpFileName pointer to the name of the file
1417 * to search for
1418 * FINDEX_INFO_LEVELS fInfoLevelId information level of the returned data
1419 * LPVOID lpFindFileData pointer to the returned information
1420 * FINDEX_SEARCH_OPS fSearchOp type of filtering to perform
1421 * LPVOID lpSearchFilter pointer to search criteria
1422 * DWORD dwAdditionalFlags additional search control flags
1423 * Variables :
1424 * Result : If the function succeeds, the return value is a search handle
1425 * that can be used in a subsequent call to the FindNextFile or
1426 * FindClose functions.
1427 * If the function fails, the return value is INVALID_HANDLE_VALUE
1428 * Remark :
1429 * Status : UNTESTED STUB
1430 *
1431 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1432 *****************************************************************************/
1433
1434HANDLE WIN32API FindFirstFileExW( LPCWSTR lpFileName,
1435 FINDEX_INFO_LEVELS fInfoLevelId,
1436 LPVOID lpFindFileData,
1437 FINDEX_SEARCH_OPS fSearchOp,
1438 LPVOID lpSearchFilter,
1439 DWORD dwAdditionalFlags)
1440{
1441
1442 dprintf(("KERNEL32: FindFirstFileExW(%08x,%08x,%08x,%08x,%08x,%08x)not implemented - INVALID_HANDLE_VALUE\n",
1443 lpFileName,
1444 fInfoLevelId,
1445 lpFindFileData,
1446 fSearchOp,
1447 lpSearchFilter,
1448 dwAdditionalFlags
1449 ));
1450
1451 return (INVALID_HANDLE_VALUE);
1452}
1453
1454/*****************************************************************************
1455 * Name : int WIN32API FoldStringA
1456 * Purpose : The FoldStringW function maps one string to another, performing
1457 * a specified transformation option.
1458 * Parameters: DWORD dwMapFlags, // mapping transformation options
1459 * LPCSTR lpSrcStr, // pointer to source string
1460 * int cchSrc, // size of source string, in bytes or characters
1461 * LPSTR lpDestStr, // pointer to destination buffer
1462 * int cchDest // size of destination buffer, in bytes or characters
1463 * Variables :
1464 * Result : If the function succeeds, the return value is the number of bytes
1465 * (ANSI version) or characters (Unicode version) written to the
1466 * destination buffer, or if the cchDest parameter is zero,
1467 * the number of bytes or characters required to hold the mapped
1468 * string.
1469 * If the function fails, the return value is zero
1470 * Remark :
1471 * Status : UNTESTED STUB
1472 *
1473 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1474 *****************************************************************************/
1475
1476int WIN32API FoldStringA( DWORD dwMapFlags, LPCSTR lpSrcStr,
1477 int cchSrc, LPSTR lpDestStr, int cchDest)
1478{
1479
1480 dprintf(("KERNEL32: FoldStringA(%08x,%08x,%08x,%08x,%08x) not implemented\n",
1481 dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest
1482 ));
1483
1484 return (0);
1485}
1486
1487/*****************************************************************************
1488 * Name : int WIN32API FoldStringW
1489 * Purpose : The FoldStringW function maps one string to another, performing
1490 * a specified transformation option.
1491 * Parameters: DWORD dwMapFlags, // mapping transformation options
1492 * LPCSTR lpSrcStr, // pointer to source string
1493 * int cchSrc, // size of source string, in bytes or characters
1494 * LPSTR lpDestStr, // pointer to destination buffer
1495 * int cchDest // size of destination buffer, in bytes or characters
1496 * Variables :
1497 * Result : If the function succeeds, the return value is the number of bytes
1498 * (ANSI version) or characters (Unicode version) written to the
1499 * destination buffer, or if the cchDest parameter is zero,
1500 * the number of bytes or characters required to hold the mapped
1501 * string.
1502 * If the function fails, the return value is zero
1503 * Remark :
1504 * Status : UNTESTED STUB
1505 *
1506 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1507 *****************************************************************************/
1508
1509int WIN32API FoldStringW( DWORD dwMapFlags, LPCWSTR lpSrcStr,
1510 int cchSrc, LPWSTR lpDestStr, int cchDest)
1511{
1512
1513 dprintf(("KERNEL32: FoldStringA(%08x,%08x,%08x,%08x,%08x) not implemented\n",
1514 dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest
1515 ));
1516
1517 return (0);
1518}
1519
1520
1521/*****************************************************************************
1522 * Name : VOID WIN32API FreeLibraryAndExitThread
1523 * Purpose : The FreeLibraryAndExitThread function decrements the reference
1524 * count of a loaded dynamic-link library (DLL) by one, and then
1525 * calls ExitThread to terminate the calling thread.
1526 * The function does not return.
1527 *
1528 * The FreeLibraryAndExitThread function gives threads that are
1529 * created and executed within a dynamic-link library an opportunity
1530 * to safely unload the DLL and terminate themselves.
1531 * Parameters:
1532 * Variables :
1533 * Result :
1534 * Remark :
1535 * Status : UNTESTED STUB
1536 *
1537 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]
1538 *****************************************************************************/
1539
1540VOID WIN32API FreeLibraryAndExitThread( HMODULE hLibModule, DWORD dwExitCode)
1541{
1542
1543 dprintf(("KERNEL32: FreeLibraryAndExitThread(%08x,%08x) not implemented\n",
1544 hLibModule, dwExitCode
1545 ));
1546
1547}
1548
1549
1550/*****************************************************************************
1551 * Name : int GetCurrencyFormatA
1552 * Purpose : The GetCurrencyFormatA function formats a number string as a
1553 * currency string for a specified locale.
1554 * Parameters: LCID Locale locale for which currency string is to be formatted
1555 * DWORD dwFlags bit flag that controls the function's operation
1556 * LPCTSTR lpValue pointer to input number string
1557 * CONST CURRENCYFMT *lpFormat pointer to a formatting information structure
1558 * LPTSTR lpCurrencyStr pointer to output buffer
1559 * int cchCurrency size of output buffer
1560 * Variables :
1561 * Result : number of bytes written to buffer
1562 * Remark :
1563 * Status : UNTESTED STUB
1564 *
1565 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1566 *****************************************************************************/
1567
1568int WIN32API GetCurrencyFormatA(LCID Locale,
1569 DWORD dwFlags,
1570 LPCTSTR lpValue,
1571 CONST CURRENCYFMTA *lpFormat,
1572 LPTSTR lpCurrencyStr,
1573 int cchCurrency)
1574{
1575 dprintf(("KERNEL32: GetCurrencyFormatA(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented\n",
1576 Locale,
1577 dwFlags,
1578 lpValue,
1579 lpFormat,
1580 lpCurrencyStr,
1581 cchCurrency));
1582
1583 if(lpValue && lpCurrencyStr) {
1584 lstrcpyA(lpCurrencyStr, lpValue);
1585 return lstrlenA(lpCurrencyStr);
1586 }
1587 return (0);
1588}
1589
1590
1591/*****************************************************************************
1592 * Name : int GetCurrencyFormatW
1593 * Purpose : The GetCurrencyFormatW function formats a number string as a
1594 * currency string for a specified locale.
1595 * Parameters: LCID Locale locale for which currency string is to be formatted
1596 * DWORD dwFlags bit flag that controls the function's operation
1597 * LPCWSTR lpValue pointer to input number string
1598 * CONST CURRENCYFMT *lpFormat pointer to a formatting information structure
1599 * LPWSTR lpCurrencyStr pointer to output buffer
1600 * int cchCurrency size of output buffer
1601 * Variables :
1602 * Result : number of bytes written to buffer
1603 * Remark :
1604 * Status : UNTESTED STUB
1605 *
1606 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1607 *****************************************************************************/
1608
1609int WIN32API GetCurrencyFormatW(LCID Locale,
1610 DWORD dwFlags,
1611 LPCWSTR lpValue,
1612 CONST CURRENCYFMTW *lpFormat,
1613 LPWSTR lpCurrencyStr,
1614 int cchCurrency)
1615{
1616 dprintf(("KERNEL32: GetCurrencyFormatW(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented\n",
1617 Locale,
1618 dwFlags,
1619 lpValue,
1620 lpFormat,
1621 lpCurrencyStr,
1622 cchCurrency));
1623
1624 if(lpValue && lpCurrencyStr) {
1625 lstrcpyW(lpCurrencyStr, lpValue);
1626 return lstrlenW(lpCurrencyStr);
1627 }
1628
1629 return (0);
1630}
1631
1632
1633/*****************************************************************************
1634 * Name : DWORD GetHandleInformation
1635 * Purpose : The GetHandleInformation function obtains information about certain
1636 * properties of an object handle. The information is obtained as a set of bit flags.
1637 * Parameters: HANDLE hObject
1638 * LPDWORD lpdwFlags
1639 * Variables :
1640 * Result : TRUE / FALSE
1641 * Remark :
1642 * Status : UNTESTED STUB
1643 *
1644 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1645 *****************************************************************************/
1646
1647BOOL WIN32API GetHandleInformation(HANDLE hObject,
1648 LPDWORD lpdwFlags)
1649{
1650 dprintf(("KERNEL32: GetHandleInformation (%08xh, %08xh) not implemented\n",
1651 hObject,
1652 lpdwFlags));
1653
1654 return (FALSE);
1655}
1656
1657
1658/*****************************************************************************
1659 * Name : BOOL GetMailslotInfo
1660 * Purpose : The GetMailslotInfo function retrieves information about the
1661 * specified mailslot.
1662 * Parameters: HANDLE hMailslot mailslot handle
1663 * LPDWORD lpMaxMessageSize address of maximum message size
1664 * LPDWORD lpNextSize address of size of next message
1665 * LPDWORD lpMessageCount address of number of messages
1666 * LPDWORD lpReadTimeout address of read time-out
1667 * Variables :
1668 * Result : TRUE / FALSE
1669 * Remark :
1670 * Status : UNTESTED STUB
1671 *
1672 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1673 *****************************************************************************/
1674
1675BOOL WIN32API GetMailslotInfo(HANDLE hMailslot,
1676 LPDWORD lpMaxMessageSize,
1677 LPDWORD lpNextSize,
1678 LPDWORD lpMessageCount,
1679 LPDWORD lpReadTimeout)
1680{
1681 dprintf(("KERNEL32: GetMailslotInfo(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented\n",
1682 hMailslot,
1683 lpMaxMessageSize,
1684 lpNextSize,
1685 lpMessageCount,
1686 lpReadTimeout));
1687
1688 return (FALSE);
1689}
1690
1691
1692
1693/*****************************************************************************
1694 * Name : BOOL GetQueuedCompletionStatus
1695 * Purpose : The GetQueuedCompletionStatus function attempts to dequeue an
1696 * I/O completion packet from a specified input/output completion
1697 * port. If there is no completion packet queued, the function waits
1698 * for a pending input/output operation associated with the completion
1699 * port to complete. The function returns when it can dequeue a
1700 * completion packet, or optionally when the function times out. If
1701 * the function returns because of an I/O operation completion, it
1702 * sets several variables that provide information about the operation.
1703 * Parameters: HANDLE CompletionPort the I/O completion port of interest
1704 * LPDWORD lpNumberOfBytesTransferred to receive number of bytes transferred during I/O
1705 * LPDWORD lpCompletionKey to receive file's completion key
1706 * LPOVERLAPPED * lpOverlapped to receive pointer to OVERLAPPED structure
1707 * DWORD dwMilliseconds optional timeout value
1708 * Variables :
1709 * Result : TRUE / FALSE
1710 * Remark :
1711 * Status : UNTESTED STUB
1712 *
1713 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1714 *****************************************************************************/
1715
1716BOOL WIN32API GetQueuedCompletionStatus(HANDLE CompletionPort,
1717 LPDWORD lpNumberOfBytesTransferred,
1718 LPDWORD lpCompletionKey,
1719 LPOVERLAPPED *lpOverlapped,
1720 DWORD dwMilliseconds)
1721{
1722 dprintf(("Kernel32: GetQueuedCompletionStatus(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.",
1723 CompletionPort,
1724 lpNumberOfBytesTransferred,
1725 lpCompletionKey,
1726 lpOverlapped,
1727 dwMilliseconds));
1728
1729 return (FALSE);
1730}
1731
1732
1733
1734/*****************************************************************************
1735 * Name : BOOL GetSystemTimeAdjustment
1736 * Purpose : The GetSystemTimeAdjustment function determines whether the system
1737 * is applying periodic time adjustments to its time-of-day clock
1738 * at each clock interrupt, along with the value and period of any
1739 * such adjustments. Note that the period of such adjustments is
1740 * equivalent to the time period between clock interrupts.
1741 * Parameters: PDWORD lpTimeAdjustment
1742 * size, in 100-nanosecond units, of a periodic time adjustment
1743 * PDWORD lpTimeIncrement
1744 * time, in 100-nanosecond units, between periodic time adjustments
1745 * PBOOL lpTimeAdjustmentDisabled
1746 * whether periodic time adjustment is disabled or enabled
1747 * Variables :
1748 * Result : TRUE / FALSE
1749 * Remark :
1750 * Status : UNTESTED STUB
1751 *
1752 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1753 *****************************************************************************/
1754
1755BOOL WIN32API GetSystemTimeAdjustment(PDWORD lpTimeAdjustment,
1756 PDWORD lpTimeIncrement,
1757 PBOOL lpTimeAdjustmentDisabled)
1758{
1759 dprintf(("KERNEL32: GetSystemTimeAdjustment(%08xh,%08xh,%08xh) not implemented.\n",
1760 lpTimeAdjustment,
1761 lpTimeIncrement,
1762 lpTimeAdjustmentDisabled));
1763
1764 return (FALSE);
1765}
1766
1767
1768/*****************************************************************************
1769 * Name : BOOL GetTapeParameters
1770 * Purpose : The GetTapeParameters function retrieves information that
1771 * describes the tape or the tape drive.
1772 * Parameters: HANDLE hDevice handle of open device
1773 * DWORD dwOperation type of information requested
1774 * LPDWORD lpdwSize address of returned information
1775 * LPVOID lpTapeInformation tape media or drive information
1776 * Variables :
1777 * Result : API returncode
1778 * Remark :
1779 * Status : UNTESTED STUB
1780 *
1781 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1782 *****************************************************************************/
1783
1784DWORD WIN32API GetTapeParameters(HANDLE hDevice,
1785 DWORD dwOperation,
1786 LPDWORD lpdwSize,
1787 LPVOID lpTapeInformation)
1788{
1789 dprintf(("KERNEL32: GetTapeParameters(%08xh,%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
1790 hDevice,
1791 dwOperation,
1792 lpdwSize,
1793 lpTapeInformation));
1794
1795 return (ERROR_NOT_SUPPORTED);
1796}
1797
1798
1799/*****************************************************************************
1800 * Name : BOOL GetTapePosition
1801 * Purpose : The GetTapePosition function retrieves the current address of
1802 * the tape, in logical or absolute blocks.
1803 * Parameters: HANDLE hDevice handle of open device
1804 * DWORD dwPositionType type of address to obtain
1805 * LPDWORD lpdwPartition address of current tape partition
1806 * LPDWORD lpdwOffsetLow address of low-order 32 bits of tape position
1807 * LPDWORD lpdwOffsetHigh address of high-order 32 bits of tape position
1808 * Variables :
1809 * Result : TRUE / FALSE
1810 * Remark :
1811 * Status : UNTESTED STUB
1812 *
1813 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1814 *****************************************************************************/
1815
1816DWORD WIN32API GetTapePosition(HANDLE hDevice,
1817 DWORD dwPositionType,
1818 LPDWORD lpdwPartition,
1819 LPDWORD lpdwOffsetLow,
1820 LPDWORD lpdwOffsetHigh)
1821{
1822 dprintf(("KERNEL32: OS2GetTapePosition(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
1823 hDevice,
1824 dwPositionType,
1825 lpdwPartition,
1826 lpdwOffsetLow,
1827 lpdwOffsetHigh));
1828
1829 return (ERROR_NOT_SUPPORTED);
1830}
1831
1832
1833/*****************************************************************************
1834 * Name : BOOL GetTapeStatus
1835 * Purpose : The GetTapeStatus function indicates whether the tape device is
1836 * ready to process tape commands.
1837 * Parameters: HANDLE hDevice handle of open device
1838 * Variables :
1839 * Result : API returncode
1840 * Remark :
1841 * Status : UNTESTED STUB
1842 *
1843 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1844 *****************************************************************************/
1845
1846DWORD WIN32API GetTapeStatus(HANDLE hDevice)
1847{
1848 dprintf(("KERNEL32: OS2GetTapeStatus(%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
1849 hDevice));
1850
1851 return (ERROR_NOT_SUPPORTED);
1852}
1853
1854
1855/*****************************************************************************
1856 * Name : BOOL GetThreadSelectorEntry
1857 * Purpose : The GetThreadSelectorEntry function retrieves a descriptor table
1858 * entry for the specified selector and thread.
1859 * Parameters: HANDLE hThread handle of thread that contains selector
1860 * DWORD dwSelector number of selector value to look up
1861 * LPLDT_ENTRY lpSelectorEntry address of selector entry structure
1862 * Variables :
1863 * Result : TRUE / FALSE
1864 * Remark :
1865 * Status : UNTESTED STUB
1866 *
1867 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1868 *****************************************************************************/
1869
1870BOOL WIN32API GetThreadSelectorEntry(HANDLE hThread,
1871 DWORD dwSelector,
1872 LPLDT_ENTRY lpSelectorEntry)
1873{
1874 dprintf(("KERNEL32: GetThreadSelectorEntry(%08xh,%08xh,%08xh) not implemented.\n",
1875 hThread,
1876 dwSelector,
1877 lpSelectorEntry));
1878
1879 return (FALSE);
1880}
1881
1882
1883/*****************************************************************************
1884 * Name : BOOL GetThreadTimes
1885 * Purpose : The GetThreadTimes function obtains timing information about a specified thread.
1886 * Parameters: HANDLE hThread specifies the thread of interest
1887 * LPFILETIME lpCreationTime when the thread was created
1888 * LPFILETIME lpExitTime when the thread exited
1889 * LPFILETIME lpKernelTime time the thread has spent in kernel mode
1890 * LPFILETIME lpUserTime time the thread has spent in user mode
1891 * Variables :
1892 * Result : TRUE / FALSE
1893 * Remark :
1894 * Status : UNTESTED STUB
1895 *
1896 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1897 *****************************************************************************/
1898
1899BOOL WIN32API GetThreadTimes(HANDLE hThread,
1900 LPFILETIME lpCreationTime,
1901 LPFILETIME lpExitTime,
1902 LPFILETIME lpKernelTime,
1903 LPFILETIME lpUserTime)
1904{
1905 dprintf(("Kernel32: GetThreadTimes(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
1906 hThread,
1907 lpCreationTime,
1908 lpExitTime,
1909 lpKernelTime,
1910 lpUserTime));
1911
1912 return (FALSE);
1913}
1914
1915
1916
1917/*****************************************************************************
1918 * Name : BOOL PostQueuedCompletionStatus
1919 * Purpose : The PostQueuedCompletionStatus function lets you post an I/O
1920 * completion packet to an I/O completion port. The I/O completion
1921 * packet will satisfy an outstanding call to the GetQueuedCompletionStatus
1922 * function. The GetQueuedCompletionStatus function returns with the three
1923 * values passed as the second, third, and fourth parameters of the call
1924 * to PostQueuedCompletionStatus.
1925 * Parameters: HANDLE CompletionPort handle to an I/O completion port
1926 * DWORD dwNumberOfBytesTransferred
1927 * DWORD dwCompletionKey
1928 * LPOVERLAPPED lpOverlapped
1929 * Variables :
1930 * Result : TRUE / FALSE
1931 * Remark :
1932 * Status : UNTESTED STUB
1933 *
1934 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1935 *****************************************************************************/
1936
1937BOOL WIN32API PostQueuedCompletionStatus(HANDLE CompletionPort,
1938 DWORD dwNumberOfBytesTransferred,
1939 DWORD dwCompletionKey,
1940 LPOVERLAPPED lpOverlapped)
1941{
1942 dprintf(("Kernel32: PostQueuedCompletionStatus(%08xh,%08xh,%08xh,%08xh) not implemented.",
1943 CompletionPort,
1944 dwNumberOfBytesTransferred,
1945 dwCompletionKey,
1946 lpOverlapped));
1947
1948 return (FALSE);
1949}
1950
1951
1952/*****************************************************************************
1953 * Name : DWORD PrepareTape
1954 * Purpose : The PrepareTape function prepares the tape to be accessed or removed.
1955 * Parameters: HANDLE hDevice handle of open device
1956 * DWORD dwOperation preparation method
1957 * BOOL bImmediate return after operation begins
1958 * Variables :
1959 * Result : API returncode
1960 * Remark :
1961 * Status : UNTESTED STUB
1962 *
1963 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
1964 *****************************************************************************/
1965
1966DWORD WIN32API PrepareTape(HANDLE hDevice,
1967 DWORD dwOperation,
1968 BOOL bImmediate)
1969{
1970 dprintf(("Kernel32: PrepareTape(%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
1971 hDevice,
1972 dwOperation,
1973 bImmediate));
1974
1975 return (ERROR_NOT_SUPPORTED);
1976}
1977
1978
1979/*****************************************************************************
1980 * Name : DWORD QueryDosDeviceA
1981 * Purpose : The QueryDosDevice function lets an application obtain information
1982 * about MS-DOS device names. The function can obtain the current
1983 * mapping for a particular MS-DOS device name. The function can also
1984 * obtain a list of all existing MS-DOS device names.
1985 * MS-DOS device names are stored as symbolic links in the Windows NT
1986 * object name space. The code that converts an MS-DOS path into a
1987 * corresponding Windows NT path uses these symbolic links to map
1988 * MS-DOS devices and drive letters. The QueryDosDevice function
1989 * provides a mechanism whereby a Win32-based application can query
1990 * the names of the symbolic links used to implement the MS-DOS device
1991 * namespace as well as the value of each specific symbolic link.
1992 * Parameters: LPCTSTR lpDeviceName address of MS-DOS device name string
1993 * LPTSTR lpTargetPath ddress of buffer for storing query results
1994 * DWORD ucchMax maximum storage capacity of buffer
1995 * Variables :
1996 * Result : pointer to lpTargetPath
1997 * Remark :
1998 * Status : UNTESTED STUB
1999 *
2000 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2001 *****************************************************************************/
2002
2003DWORD WIN32API QueryDosDeviceA(LPCTSTR lpDeviceName,
2004 LPTSTR lpTargetPath,
2005 DWORD ucchMax)
2006{
2007 dprintf(("Kernel32: QueryDosDeviceA(%s,%08xh,%08xh) not implemented.\n",
2008 lpDeviceName,
2009 lpTargetPath,
2010 ucchMax));
2011
2012 return (0);
2013}
2014
2015
2016/*****************************************************************************
2017 * Name : DWORD QueryDosDeviceW
2018 * Purpose : The QueryDosDevice function lets an application obtain information
2019 * about MS-DOS device names. The function can obtain the current
2020 * mapping for a particular MS-DOS device name. The function can also
2021 * obtain a list of all existing MS-DOS device names.
2022 * MS-DOS device names are stored as symbolic links in the Windows NT
2023 * object name space. The code that converts an MS-DOS path into a
2024 * corresponding Windows NT path uses these symbolic links to map
2025 * MS-DOS devices and drive letters. The QueryDosDevice function
2026 * provides a mechanism whereby a Win32-based application can query
2027 * the names of the symbolic links used to implement the MS-DOS device
2028 * namespace as well as the value of each specific symbolic link.
2029 * Parameters: LPCTSTR lpDeviceName address of MS-DOS device name string
2030 * LPTSTR lpTargetPath ddress of buffer for storing query results
2031 * DWORD ucchMax maximum storage capacity of buffer
2032 * Variables :
2033 * Result : pointer to lpTargetPath
2034 * Remark :
2035 * Status : UNTESTED STUB
2036 *
2037 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2038 *****************************************************************************/
2039
2040DWORD WIN32API QueryDosDeviceW(LPCWSTR lpDeviceName,
2041 LPWSTR lpTargetPath,
2042 DWORD ucchMax)
2043{
2044 dprintf(("Kernel32: QueryDosDeviceW(%s,%08xh,%08xh) not implemented.\n",
2045 lpDeviceName,
2046 lpTargetPath,
2047 ucchMax));
2048
2049 return (0);
2050}
2051
2052
2053/*****************************************************************************
2054 * Name : DWORD ReadProcessMemory
2055 * Purpose : The ReadProcessMemory function reads memory in a specified process.
2056 * The entire area to be read must be accessible, or the operation fails.
2057 * Parameters: HANDLE hProcess handle of the process whose memory is read
2058 * LPCVOID lpBaseAddress address to start reading
2059 * LPVOID lpBuffer address of buffer to place read data
2060 * DWORD cbRead number of bytes to read
2061 * LPDWORD lpNumberOfBytesRead address of number of bytes read
2062 * Variables :
2063 * Result : TRUE / FALSE
2064 * Remark :
2065 * Status : UNTESTED STUB
2066 *
2067 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2068 *****************************************************************************/
2069
2070DWORD WIN32API ReadProcessMemory(HANDLE hProcess,
2071 LPCVOID lpBaseAddress,
2072 LPVOID lpBuffer,
2073 DWORD cbRead,
2074 LPDWORD lpNumberOfBytesRead)
2075{
2076 dprintf(("Kernel32: ReadProcessMemory(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
2077 hProcess,
2078 lpBaseAddress,
2079 lpBuffer,
2080 cbRead,
2081 lpNumberOfBytesRead));
2082 // FIXME: check this, if we ever run win32 binaries in different addressspaces
2083 // ... and add a sizecheck
2084 memcpy(lpBuffer,lpBaseAddress,cbRead);
2085 if (lpNumberOfBytesRead) *lpNumberOfBytesRead = cbRead;
2086 return TRUE;
2087}
2088
2089/*****************************************************************************
2090 * Name : DWORD WriteProcessMemory
2091 * Purpose : The WriteProcessMemory function writes memory in a specified
2092 * process. The entire area to be written to must be accessible,
2093 * or the operation fails.
2094 * Parameters: HANDLE hProcess handle of process whose memory is written to
2095 * LPVOID lpBaseAddress address to start writing to
2096 * LPVOID lpBuffer address of buffer to write data to
2097 * DWORD cbWrite number of bytes to write
2098 * LPDWORD lpNumberOfBytesWritten actual number of bytes written
2099 * Variables :
2100 * Result : TRUE / FALSE
2101 * Remark :
2102 * Status : UNTESTED STUB
2103 *
2104 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2105 *****************************************************************************/
2106
2107DWORD WIN32API WriteProcessMemory(HANDLE hProcess,
2108 LPCVOID lpBaseAddress,
2109 LPVOID lpBuffer,
2110 DWORD cbWrite,
2111 LPDWORD lpNumberOfBytesWritten)
2112{
2113 dprintf(("Kernel32: WriteProcessMemory(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
2114 hProcess,
2115 lpBaseAddress,
2116 lpBuffer,
2117 cbWrite,
2118 lpNumberOfBytesWritten));
2119
2120 // FIXME: check this, if we ever run win32 binaries in different addressspaces
2121 // ... and add a sizecheck
2122 memcpy((void*)lpBaseAddress,lpBuffer,cbWrite);
2123 if (lpNumberOfBytesWritten) *lpNumberOfBytesWritten = cbWrite;
2124 return TRUE;
2125}
2126
2127
2128/*****************************************************************************
2129 * Name : BOOL SetComputerNameA
2130 * Purpose : The SetComputerNameA function sets the computer name to be used
2131 * the next time the system is restarted.
2132 * Parameters: LPCTSTR lpszName address of new computer name
2133 * Variables :
2134 * Result : TRUE / FALSE
2135 * Remark :
2136 * Status : UNTESTED STUB
2137 *
2138 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2139 *****************************************************************************/
2140
2141BOOL WIN32API SetComputerNameA(LPCTSTR lpszName)
2142{
2143 dprintf(("Kernel32: SetComputerNameA(%s) not implemented.\n",
2144 lpszName));
2145
2146 return (FALSE);
2147}
2148
2149
2150/*****************************************************************************
2151 * Name : BOOL SetComputerNameW
2152 * Purpose : The SetComputerNameW function sets the computer name to be used
2153 * the next time the system is restarted.
2154 * Parameters: LPCTSTR lpszName address of new computer name
2155 * Variables :
2156 * Result : TRUE / FALSE
2157 * Remark :
2158 * Status : UNTESTED STUB
2159 *
2160 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2161 *****************************************************************************/
2162
2163BOOL WIN32API SetComputerNameW(LPCWSTR lpszName)
2164{
2165 dprintf(("Kernel32: SetComputerNameW(%s) not implemented.\n",
2166 lpszName));
2167
2168 return (FALSE);
2169}
2170
2171
2172/*****************************************************************************
2173 * Name : VOID SetFileApisToOEM
2174 * Purpose : The SetFileApisToOEM function causes a set of Win32 file functions
2175 * to use the OEM character set code page. This function is useful
2176 * for 8-bit console input and output operations.
2177 * Parameters: VOID
2178 * Variables :
2179 * Result :
2180 * Remark :
2181 * Status : UNTESTED STUB
2182 *
2183 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2184 *****************************************************************************/
2185
2186VOID WIN32API SetFileApisToOEM(VOID)
2187{
2188 dprintf(("Kernel32: SetFileApisToOEM() not implemented.\n"));
2189}
2190
2191
2192/*****************************************************************************
2193 * Name : BOOL SetHandleInformation
2194 * Purpose : The SetHandleInformation function sets certain properties of an
2195 * object handle. The information is specified as a set of bit flags.
2196 * Parameters: HANDLE hObject handle to an object
2197 * DWORD dwMask specifies flags to change
2198 * DWORD dwFlags specifies new values for flags
2199 * Variables :
2200 * Result : TRUE / FALSE
2201 * Remark :
2202 * Status : UNTESTED STUB
2203 *
2204 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2205 *****************************************************************************/
2206
2207BOOL WIN32API SetHandleInformation(HANDLE hObject,
2208 DWORD dwMask,
2209 DWORD dwFlags)
2210{
2211 dprintf(("KERNEL32: SetHandleInformation(%08xh,%08xh,%08xh) not implemented.\n",
2212 hObject,
2213 dwMask,
2214 dwFlags));
2215
2216 return (FALSE);
2217}
2218
2219
2220/*****************************************************************************
2221 * Name : BOOL SetMailslotInfo
2222 * Purpose : The SetMailslotInfo function sets the time-out value used by the
2223 * specified mailslot for a read operation.
2224 * Parameters: HANDLE hObject handle to a mailslot object
2225 * DWORD dwReadTimeout read time-out
2226 * Variables :
2227 * Result : TRUE / FALSE
2228 * Remark :
2229 * Status : UNTESTED STUB
2230 *
2231 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2232 *****************************************************************************/
2233
2234BOOL WIN32API SetMailslotInfo(HANDLE hObject,
2235 DWORD dwReadTimeout)
2236{
2237 dprintf(("KERNEL32: SetMailslotInfo(%08xh,%08xh) not implemented.\n",
2238 hObject,
2239 dwReadTimeout));
2240
2241 return (FALSE);
2242}
2243
2244
2245/*****************************************************************************
2246 * Name : BOOL SetSystemPowerState
2247 * Purpose : The SetSystemPowerState function suspends the system by shutting
2248 * power down. Depending on the ForceFlag parameter, the function
2249 * either suspends operation immediately or requests permission from
2250 * all applications and device drivers before doing so.
2251 * Parameters: BOOL fSuspend
2252 * BOOL fForce
2253 * Variables :
2254 * Result : TRUE / FALSE
2255 * Remark :
2256 * Status : UNTESTED STUB
2257 *
2258 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2259 *****************************************************************************/
2260
2261BOOL WIN32API SetSystemPowerState(BOOL fSuspend,
2262 BOOL fForce)
2263{
2264 dprintf(("KERNEL32: SetSystemPowerState(%08xh,%08xh) not implemented.\n",
2265 fSuspend,
2266 fForce));
2267
2268 return (FALSE);
2269}
2270
2271
2272/*****************************************************************************
2273 * Name : BOOL SetSystemTimeAdjustment
2274 * Purpose : The SetSystemTimeAdjustment function tells the system to enable
2275 * or disable periodic time adjustments to its time of day clock.
2276 * Such time adjustments are used to synchronize the time of day
2277 * with some other source of time information. When periodic time
2278 * adjustments are enabled, they are applied at each clock interrupt.
2279 * Parameters: DWORD dwTimeAdjustment
2280 * BOOL bTimeAdjustmentDisabled
2281 * Variables :
2282 * Result : TRUE / FALSE
2283 * Remark :
2284 * Status : UNTESTED STUB
2285 *
2286 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2287 *****************************************************************************/
2288
2289BOOL WIN32API SetSystemTimeAdjustment(DWORD dwTimeAdjustment,
2290 BOOL bTimeAdjustmentDisabled)
2291{
2292 dprintf(("KERNEL32: SetSystemTimeAdjustment(%08xh,%08xh) not implemented.\n",
2293 dwTimeAdjustment,
2294 bTimeAdjustmentDisabled));
2295
2296 return (FALSE);
2297}
2298
2299
2300/*****************************************************************************
2301 * Name : DWORD SetTapeParameters
2302 * Purpose : The SetTapeParameters function either specifies the block size
2303 * of a tape or configures the tape device.
2304 * Parameters: HANDLE hDevice handle of open device
2305 * DWORD dwOperation type of information to set
2306 * LPVOID lpTapeInformation address of buffer with information to set
2307 * Variables :
2308 * Result : API returncode
2309 * Remark :
2310 * Status : UNTESTED STUB
2311 *
2312 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2313 *****************************************************************************/
2314
2315BOOL WIN32API SetTapeParameters(HANDLE hDevice,
2316 DWORD dwOperation,
2317 LPVOID lpTapeInformation)
2318{
2319 dprintf(("KERNEL32: SetTapeParameters(%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
2320 hDevice,
2321 dwOperation,
2322 lpTapeInformation));
2323
2324 return (ERROR_NOT_SUPPORTED);
2325}
2326
2327
2328/*****************************************************************************
2329 * Name : DWORD SetTapePosition
2330 * Purpose : The SetTapePosition sets the tape position on the specified device.
2331 * Parameters: HANDLE hDevice handle of open device
2332 * DWORD dwPositionMethod type of positioning to perform
2333 * DWORD dwPartition new tape partition
2334 * DWORD dwOffsetLow low-order 32 bits of tape position
2335 * DWORD dwOffsetHigh high-order 32 bits of tape position
2336 * BOOL bImmediate return after operation begins
2337 * Variables :
2338 * Result : API returncode
2339 * Remark :
2340 * Status : UNTESTED STUB
2341 *
2342 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2343 *****************************************************************************/
2344
2345BOOL WIN32API SetTapePosition(HANDLE hDevice,
2346 DWORD dwPositionMethod,
2347 DWORD dwPartition,
2348 DWORD dwOffsetLow,
2349 DWORD dwOffsetHigh,
2350 BOOL bImmediate)
2351{
2352 dprintf(("KERNEL32: SetTapePosition(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
2353 hDevice,
2354 dwPositionMethod,
2355 dwPartition,
2356 dwOffsetLow,
2357 dwOffsetHigh,
2358 bImmediate));
2359
2360 return (ERROR_NOT_SUPPORTED);
2361}
2362
2363
2364/*****************************************************************************
2365 * Name : DWORD SetThreadAffinityMask
2366 * Purpose : The SetThreadAffinityMask function sets a processor affinity
2367 * mask for a specified thread.
2368 * A thread affinity mask is a bit vector in which each bit
2369 * represents the processors that a thread is allowed to run on.
2370 * A thread affinity mask must be a proper subset of the process
2371 * affinity mask for the containing process of a thread. A thread
2372 * is only allowed to run on the processors its process is allowed to run on.
2373 * Parameters: HANDLE hThread handle to the thread of interest
2374 * DWORD dwThreadAffinityMask a thread affinity mask
2375 * Variables :
2376 * Result : TRUE / FALSE
2377 * Remark :
2378 * Status : UNTESTED STUB
2379 *
2380 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2381 *****************************************************************************/
2382
2383DWORD WIN32API SetThreadAffinityMask(HANDLE hThread,
2384 DWORD dwThreadAffinityMask)
2385{
2386 dprintf(("KERNEL32: SetThreadAffinityMask(%08xh,%08xh) not implemented.\n",
2387 hThread,
2388 dwThreadAffinityMask));
2389
2390 return (0);
2391}
2392
2393
2394
2395/*****************************************************************************
2396 * Name : BOOL UpdateResourceA
2397 * Purpose : The UpdateResourceA function adds, deletes, or replaces a resource
2398 * in an executable file.
2399 * Parameters: HANDLE hUpdateFile update-file handle
2400 * LPCTSTR lpszType address of resource type to update
2401 * LPCTSTR lpszName address of resource name to update
2402 * WORD IDLanguage language identifier of resource
2403 * LPVOID lpvData address of resource data
2404 * DWORD cbData length of resource data, in bytes
2405 * Variables :
2406 * Result : TRUE / FALSE
2407 * Remark :
2408 * Status : UNTESTED STUB
2409 *
2410 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2411 *****************************************************************************/
2412
2413BOOL WIN32API UpdateResourceA(HANDLE hUpdateFile,
2414 LPCTSTR lpszType,
2415 LPCTSTR lpszName,
2416 WORD IDLanguage,
2417 LPVOID lpvData,
2418 DWORD cbData)
2419{
2420 dprintf(("KERNEL32: UpdateResourceA(%08xh,%s,%s,%08xh,%08xh,%08xh) not implemented.\n",
2421 hUpdateFile,
2422 lpszType,
2423 lpszName,
2424 IDLanguage,
2425 lpvData,
2426 cbData));
2427
2428 return (FALSE);
2429}
2430
2431
2432/*****************************************************************************
2433 * Name : BOOL UpdateResourceW
2434 * Purpose : The UpdateResourceW function adds, deletes, or replaces a resource
2435 * in an executable file.
2436 * Parameters: HANDLE hUpdateFile update-file handle
2437 * LPCTSTR lpszType address of resource type to update
2438 * LPCTSTR lpszName address of resource name to update
2439 * WORD IDLanguage language identifier of resource
2440 * LPVOID lpvData address of resource data
2441 * DWORD cbData length of resource data, in bytes
2442 * Variables :
2443 * Result : TRUE / FALSE
2444 * Remark :
2445 * Status : UNTESTED STUB
2446 *
2447 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2448 *****************************************************************************/
2449
2450BOOL WIN32API UpdateResourceW(HANDLE hUpdateFile,
2451 LPCWSTR lpszType,
2452 LPCWSTR lpszName,
2453 WORD IDLanguage,
2454 LPVOID lpvData,
2455 DWORD cbData)
2456{
2457 dprintf(("KERNEL32: UpdateResourceW(%08xh,%s,%s,%08xh,%08xh,%08xh) not implemented.\n",
2458 hUpdateFile,
2459 lpszType,
2460 lpszName,
2461 IDLanguage,
2462 lpvData,
2463 cbData));
2464
2465 return (FALSE);
2466}
2467
2468/*****************************************************************************
2469 * Name : BOOL WriteTapemark
2470 * Purpose : The WriteTapemark function writes a specified number of filemarks,
2471 * setmarks, short filemarks, or long filemarks to a tape device.
2472 * These tapemarks divide a tape partition into smaller areas.
2473 * Parameters: HANDLE hDevice handle of open device
2474 * DWORD dwTapemarkType type of tapemarks to write
2475 * DWORD dwTapemarkCount number of tapemarks to write
2476 * BOOL bImmediate return after write begins
2477 * Variables :
2478 * Result : API returncode
2479 * Remark :
2480 * Status : UNTESTED STUB
2481 *
2482 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2483 *****************************************************************************/
2484
2485DWORD WIN32API WriteTapemark(HANDLE hDevice,
2486 DWORD dwTapemarkType,
2487 DWORD dwTapemarkCount,
2488 BOOL bImmediate)
2489{
2490 dprintf(("KERNEL32: WriteTapemark(%08xh,%08xh,%08xh,%08xh) not implemented - ERROR_NOT_SUPPORTED.\n",
2491 hDevice,
2492 dwTapemarkType,
2493 dwTapemarkCount,
2494 bImmediate));
2495
2496 return (ERROR_NOT_SUPPORTED);
2497}
2498
2499
2500/*****************************************************************************
2501 * Name : DWORD CmdBatNotification
2502 * Purpose : Unknown, used by /winnt/cmd.exe
2503 * Parameters: Unknown (wrong)
2504 * Variables :
2505 * Result : Unknown
2506 * Remark :
2507 * Status : UNTESTED STUB
2508 *
2509 * Author : Patrick Haller [Tue, 1999/06/08 21:44]
2510 *****************************************************************************/
2511
2512DWORD WIN32API CmdBatNotification(DWORD x1)
2513{
2514 dprintf(("KERNEL32: CmdBatNotification(%08xh) not implemented\n",
2515 x1));
2516
2517 return (0);
2518}
2519
2520
2521/*****************************************************************************
2522 * Name : DWORD GetVDMCurrentDirectories
2523 * Purpose : Unknown, used by /winnt/cmd.exe
2524 * Parameters: Unknown (wrong)
2525 * Variables :
2526 * Result : Unknown
2527 * Remark :
2528 * Status : UNTESTED STUB
2529 *
2530 * Author : Patrick Haller [Tue, 1999/06/08 21:44]
2531 *****************************************************************************/
2532
2533DWORD WIN32API GetVDMCurrentDirectories(DWORD x1)
2534{
2535 dprintf(("KERNEL32: GetVDMCurrentDirectories(%08xh) not implemented\n",
2536 x1));
2537
2538 return (0);
2539}
2540
2541
2542/*****************************************************************************
2543 * Name : DWORD SetThreadPriorityBoost
2544 * Purpose : Unknown
2545 * Parameters: Unknown (wrong)
2546 * Variables :
2547 * Result : Unknown
2548 * Remark :
2549 * Status : UNTESTED STUB
2550 *
2551 * Author : Patrick Haller [Tue, 1999/06/08 21:44]
2552 *****************************************************************************/
2553
2554DWORD WIN32API SetThreadPriorityBoost(DWORD x1,
2555 DWORD x2)
2556{
2557 dprintf(("KERNEL32: SetThreadPriorityBoost(%08xh, %08xh) not implemented\n",
2558 x1,
2559 x2));
2560
2561 return (0);
2562}
2563
2564/*****************************************************************************
2565 * Name : ???
2566 * Purpose : Unknown (used by explorer.exe)
2567 * Parameters: Unknown (wrong)
2568 * Variables :
2569 * Result : Unknown
2570 * Remark :
2571 * Status : UNTESTED STUB
2572 *
2573 * Author : Christoph Bratschi [Wed, 2000/03/29 19:47]
2574 *****************************************************************************/
2575
2576VOID WIN32API KERNEL32_99(DWORD x)
2577{
2578 dprintf(("KERNEL32: Unknown API KERNEL32.99\n"));
2579}
2580
2581
Note: See TracBrowser for help on using the repository browser.