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

Last change on this file since 5478 was 5451, checked in by sandervl, 24 years ago

codepage updates

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