source: trunk/src/win32k/dev32/d32Win32kIOCtl.c@ 4311

Last change on this file since 4311 was 4164, checked in by bird, 25 years ago

Merged in the Grace branch. New Win32k!

File size: 3.1 KB
Line 
1/* $Id: d32Win32kIOCtl.c,v 1.2 2000-09-02 21:07:57 bird Exp $
2 *
3 * Win32k driver IOCtl handler function.
4 *
5 * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
6 *
7 * Project Odin Software License can be found in LICENSE.TXT
8 *
9 */
10/*******************************************************************************
11* Defined Constants And Macros *
12*******************************************************************************/
13#define INCL_DOSERRORS
14#define INCL_NOPMAPI
15
16#define NO_WIN32K_LIB_FUNCTIONS
17
18
19/*******************************************************************************
20* Header Files *
21*******************************************************************************/
22#include <os2.h>
23
24#include "devSegDf.h"
25#include "dev1632.h"
26#include "dev32.h"
27#include "OS2Krnl.h"
28#include "Win32k.h"
29#include "k32.h"
30
31
32
33/**
34 * IOCtl handler for the Win32k part of the driver.
35 * @returns Gen IOCtl return code.
36 * @param pRpIOCtl Pointer to 32-bit request packet. (not to the original packet)
37 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
38 */
39USHORT _loadds _Far32 _Pascal Win32kIOCtl(PRP32GENIOCTL pRpIOCtl)
40{
41 switch (pRpIOCtl->Category)
42 {
43 case IOCTL_W32K_K32:
44 switch (pRpIOCtl->Function)
45 {
46 case K32_ALLOCMEMEX:
47 {
48 PK32ALLOCMEMEX pParm = (PK32ALLOCMEMEX)pRpIOCtl->ParmPacket;
49 if (pParm == NULL)
50 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER;
51 pParm->rc = k32AllocMemEx(&pParm->pv, pParm->cb, pParm->flFlags,
52 pParm->ulCS, pParm->ulEIP);
53 return STATUS_DONE;
54 }
55
56 case K32_QUERYOTES:
57 {
58 PK32QUERYOTES pParm = (PK32QUERYOTES)pRpIOCtl->ParmPacket;
59 if (pParm == NULL)
60 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER;
61 pParm->rc = k32QueryOTEs((HMTE)pParm->hMTE, pParm->pQOte, pParm->cbQOte);
62 return STATUS_DONE;
63 }
64
65 case K32_QUERYOPTIONSSTATUS:
66 {
67 PK32QUERYOPTIONSSTATUS pParm = (PK32QUERYOPTIONSSTATUS)pRpIOCtl->ParmPacket;
68 if (pParm == NULL)
69 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER;
70 pParm->rc = k32QueryOptionsStatus(pParm->pOptions, pParm->pStatus);
71 return STATUS_DONE;
72 }
73
74 case K32_SETOPTIONS:
75 {
76 PK32SETOPTIONS pParm = (PK32SETOPTIONS)pRpIOCtl->ParmPacket;
77 if (pParm == NULL)
78 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER;
79 pParm->rc = k32SetOptions(pParm->pOptions);
80 return STATUS_DONE;
81 }
82
83 }
84 break;
85 }
86
87 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER;
88}
89
Note: See TracBrowser for help on using the repository browser.