Release 20030408.
[wine/gsoc-2012-control.git] / dlls / twain / ds_ctrl.c
blobbc6841a539a2322db3b441439658efa3ee4865a4
1 /*
2 * Copyright 2000 Corel Corporation
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #include "config.h"
21 #ifdef HAVE_UNISTD_H
22 # include <unistd.h>
23 #endif
24 #include <stdlib.h>
25 #include "twain.h"
26 #include "twain_i.h"
27 #include "wine/debug.h"
29 WINE_DEFAULT_DEBUG_CHANNEL(twain);
31 /* DG_CONTROL/DAT_CAPABILITY/MSG_GET */
32 TW_UINT16 TWAIN_CapabilityGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
33 TW_MEMREF pData)
35 TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
36 pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
37 activeDS *pSource = TWAIN_LookupSource (pDest);
39 TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GET\n");
41 if (!pDest)
43 twRC = TWRC_FAILURE;
44 DSM_twCC = TWCC_BADDEST;
46 else if (pSource->currentState < 4 || pSource->currentState > 7)
48 twRC = TWRC_FAILURE;
49 pSource->twCC = TWCC_SEQERROR;
51 else
53 twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_GET);
54 twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
55 pSource->twCC = twCC;
58 return twRC;
61 /* DG_CONTROL/DAT_CAPABILITY/MSG_GETCURRENT */
62 TW_UINT16 TWAIN_CapabilityGetCurrent (pTW_IDENTITY pOrigin,
63 pTW_IDENTITY pDest,TW_MEMREF pData)
65 TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
66 pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
67 activeDS *pSource = TWAIN_LookupSource (pDest);
69 TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GETCURRENT\n");
71 if (!pSource)
73 twRC = TWRC_FAILURE;
74 DSM_twCC = TWCC_BADDEST;
76 else if (pSource->currentState < 4 || pSource->currentState > 7)
78 twRC = TWRC_FAILURE;
79 pSource->twCC = TWCC_SEQERROR;
81 else
83 twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_GETCURRENT);
84 twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
85 pSource->twCC = twCC;
88 return twRC;
91 /* DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT */
92 TW_UINT16 TWAIN_CapabilityGetDefault (pTW_IDENTITY pOrigin,
93 pTW_IDENTITY pDest, TW_MEMREF pData)
95 TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
96 pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
97 activeDS *pSource = TWAIN_LookupSource (pDest);
99 TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT\n");
101 if (!pDest)
103 twRC = TWRC_FAILURE;
104 DSM_twCC = TWCC_BADDEST;
106 else if (pSource->currentState < 4 || pSource->currentState > 7)
108 twRC = TWRC_FAILURE;
109 pSource->twCC = TWCC_SEQERROR;
111 else
113 twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_GETDEFAULT);
114 twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
115 pSource->twCC = twCC;
118 return twRC;
121 /* DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT */
122 TW_UINT16 TWAIN_CapabilityQuerySupport (pTW_IDENTITY pOrigin,
123 pTW_IDENTITY pDest, TW_MEMREF pData)
125 FIXME ("stub!\n");
127 return TWRC_FAILURE;
130 /* DG_CONTROL/DAT_CAPABILITY/MSG_RESET */
131 TW_UINT16 TWAIN_CapabilityReset (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
132 TW_MEMREF pData)
134 TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
135 pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
136 activeDS *pSource = TWAIN_LookupSource (pDest);
138 TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_RESET\n");
140 if (!pDest)
142 twRC = TWRC_FAILURE;
143 DSM_twCC = TWCC_BADDEST;
145 else if (pSource->currentState < 4 || pSource->currentState > 7)
147 twRC = TWRC_FAILURE;
148 pSource->twCC = TWCC_SEQERROR;
150 else
152 twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_RESET);
153 twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
154 pSource->twCC = twCC;
157 return twRC;
160 /* DG_CONTROL/DAT_CAPABILITY/MSG_SET */
161 TW_UINT16 TWAIN_CapabilitySet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
162 TW_MEMREF pData)
164 TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
165 pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
166 activeDS *pSource = TWAIN_LookupSource (pDest);
168 TRACE ("DG_CONTROL/DAT_CAPABILITY/MSG_SET\n");
170 if (!pSource)
172 twRC = TWRC_FAILURE;
173 DSM_twCC = TWCC_BADDEST;
175 else if (pSource->currentState != 4)
177 twRC = TWRC_FAILURE;
178 pSource->twCC = TWCC_SEQERROR;
180 else
182 twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_SET);
183 twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
184 pSource->twCC = twCC;
186 return twRC;
189 /* DG_CONTROL/DAT_CUSTOMDSDATA/MSG_GET */
190 TW_UINT16 TWAIN_CustomDSDataGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
191 TW_MEMREF pData)
193 FIXME ("stub!\n");
195 return TWRC_FAILURE;
198 /* DG_CONTROL/DAT_CUSTOMDSDATA/MSG_SET */
199 TW_UINT16 TWAIN_CustomDSDataSet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
200 TW_MEMREF pData)
202 FIXME ("stub!\n");
204 return TWRC_FAILURE;
207 /* DG_CONTROL/DAT_FILESYSTEM/MSG_AUTOMATICCAPTUREDIRECTORY */
208 TW_UINT16 TWAIN_AutomaticCaptureDirectory (pTW_IDENTITY pOrigin,
209 pTW_IDENTITY pDest,
210 TW_MEMREF pData)
212 FIXME ("stub!\n");
214 return TWRC_FAILURE;
217 /* DG_CONTROL/DAT_FILESYSTEM/MSG_CHANGEDIRECTORY */
218 TW_UINT16 TWAIN_ChangeDirectory (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
219 TW_MEMREF pData)
221 FIXME ("stub!\n");
223 return TWRC_FAILURE;
226 /* DG_CONTROL/DAT_FILESYSTEM/MSG_COPY */
227 TW_UINT16 TWAIN_FileSystemCopy (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
228 TW_MEMREF pData)
230 FIXME ("stub!\n");
232 return TWRC_FAILURE;
235 /* DG_CONTROL/DAT_FILESYSTEM/MSG_CREATEDIRECTORY */
236 TW_UINT16 TWAIN_CreateDirectory (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
237 TW_MEMREF pData)
239 FIXME ("stub!\n");
241 return TWRC_FAILURE;
244 /* DG_CONTROL/DAT_FILESYSTEM/MSG_DELETE */
245 TW_UINT16 TWAIN_FileSystemDelete (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
246 TW_MEMREF pData)
248 FIXME ("stub!\n");
250 return TWRC_FAILURE;
253 /* DG_CONTROL/DAT_FILESYSTEM/MSG_FORMATMEDIA */
254 TW_UINT16 TWAIN_FormatMedia (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
255 TW_MEMREF pData)
257 FIXME ("stub!\n");
259 return TWRC_FAILURE;
262 /* DG_CONTROL/DAT_FILESYSTEM/MSG_GETCLOSE */
263 TW_UINT16 TWAIN_FileSystemGetClose (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
264 TW_MEMREF pData)
266 FIXME ("stub!\n");
268 return TWRC_FAILURE;
271 /* DG_CONTROL/DAT_FILESYSTEM/MSG_GETFIRSTFILE */
272 TW_UINT16 TWAIN_FileSystemGetFirstFile (pTW_IDENTITY pOrigin,
273 pTW_IDENTITY pDest,
274 TW_MEMREF pData)
276 FIXME ("stub!\n");
278 return TWRC_FAILURE;
281 /* DG_CONTROL/DAT_FILESYSTEM/MSG_GETINFO */
282 TW_UINT16 TWAIN_FileSystemGetInfo (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
283 TW_MEMREF pData)
285 FIXME ("stub!\n");
287 return TWRC_FAILURE;
290 /* DG_CONTROL/DAT_FILESYSTEM/MSG_GETNEXTFILE */
291 TW_UINT16 TWAIN_FileSystemGetNextFile (pTW_IDENTITY pOrigin,
292 pTW_IDENTITY pDest,
293 TW_MEMREF pData)
295 FIXME ("stub!\n");
297 return TWRC_FAILURE;
300 /* DG_CONTROL/DAT_FILESYSTEM/MSG_RENAME */
301 TW_UINT16 TWAIN_FileSystemRename (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
302 TW_MEMREF pData)
304 FIXME ("stub!\n");
306 return TWRC_FAILURE;
309 /* DG_CONTROL/DAT_EVENT/MSG_PROCESSEVENT */
310 TW_UINT16 TWAIN_ProcessEvent (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
311 TW_MEMREF pData)
313 TW_UINT16 twRC = TWRC_SUCCESS;
314 pTW_EVENT pEvent = (pTW_EVENT) pData;
315 activeDS *pSource = TWAIN_LookupSource (pDest);
317 TRACE("DG_CONTROL/DAT_EVENT/MSG_PROCESSEVENT\n");
319 if (!pSource)
321 twRC = TWRC_FAILURE;
322 DSM_twCC = TWCC_BADDEST;
324 else if (pSource->currentState < 5 || pSource->currentState > 7)
326 twRC = TWRC_FAILURE;
327 pSource->twCC = TWCC_SEQERROR;
329 else
331 if (pSource->pendingEvent.TWMessage != MSG_NULL)
333 pEvent->TWMessage = pSource->pendingEvent.TWMessage;
334 pSource->pendingEvent.TWMessage = MSG_NULL;
335 twRC = TWRC_DSEVENT;
337 else
339 pEvent->TWMessage = MSG_NULL; /* no message to the application */
340 twRC = TWRC_NOTDSEVENT;
342 pSource->twCC = TWCC_SUCCESS;
345 return twRC;
348 /* DG_CONTROL/DAT_PASSTHRU/MSG_PASSTHRU */
349 TW_UINT16 TWAIN_PassThrough (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
350 TW_MEMREF pData)
352 FIXME ("stub!\n");
354 return TWRC_FAILURE;
357 /* DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER */
358 TW_UINT16 TWAIN_PendingXfersEndXfer (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
359 TW_MEMREF pData)
361 TW_UINT16 twRC = TWRC_SUCCESS;
362 pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
363 activeDS *pSource = TWAIN_LookupSource (pData);
365 TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER\n");
367 if (!pSource)
369 twRC = TWRC_FAILURE;
370 DSM_twCC = TWCC_BADDEST;
372 else if (pSource->currentState != 6 && pSource->currentState != 7)
374 twRC = TWRC_FAILURE;
375 pSource->twCC = TWCC_SEQERROR;
377 else
379 if (pPendingXfers->Count != 0)
381 pPendingXfers->Count --;
382 pSource->currentState = 6;
384 else
386 pSource->currentState = 5;
387 /* Notify the application that it can close the data source */
388 pSource->pendingEvent.TWMessage = MSG_CLOSEDSREQ;
390 twRC = TWRC_SUCCESS;
391 pSource->twCC = TWCC_SUCCESS;
394 return twRC;
397 /* DG_CONTROL/DAT_PENDINGXFERS/MSG_GET */
398 TW_UINT16 TWAIN_PendingXfersGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
399 TW_MEMREF pData)
401 TW_UINT16 twRC = TWRC_SUCCESS;
402 pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
403 activeDS *pSource = TWAIN_LookupSource (pDest);
405 TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_GET\n");
407 if (!pSource)
409 twRC = TWRC_FAILURE;
410 DSM_twCC = TWCC_BADDEST;
412 else if (pSource->currentState < 4 || pSource->currentState > 7)
414 twRC = TWRC_FAILURE;
415 DSM_twCC = TWCC_SEQERROR;
417 else
419 /* FIXME: we shouldn't return 1 here */
420 pPendingXfers->Count = 1;
421 twRC = TWRC_SUCCESS;
422 pSource->twCC = TWCC_SUCCESS;
425 return twRC;
428 /* DG_CONTROL/DAT_PENDINGXFERS/MSG_RESET */
429 TW_UINT16 TWAIN_PendingXfersReset (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
430 TW_MEMREF pData)
432 TW_UINT16 twRC = TWRC_SUCCESS;
433 pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
434 activeDS *pSource = TWAIN_LookupSource (pDest);
436 TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_RESET\n");
438 if (!pSource)
440 twRC = TWRC_FAILURE;
441 DSM_twCC = TWCC_BADDEST;
443 else if (pSource->currentState != 6)
445 twRC = TWRC_FAILURE;
446 DSM_twCC = TWCC_SEQERROR;
448 else
450 pPendingXfers->Count = 0;
451 pSource->currentState = 5;
452 twRC = TWRC_SUCCESS;
453 pSource->twCC = TWCC_SUCCESS;
456 return twRC;
459 /* DG_CONTROL/DAT_PENDINGXFERS/MSG_STOPFEEDER */
460 TW_UINT16 TWAIN_PendingXfersStopFeeder (pTW_IDENTITY pOrigin,
461 pTW_IDENTITY pDest, TW_MEMREF pData)
463 FIXME ("stub!\n");
465 return TWRC_FAILURE;
468 /* DG_CONTROL/DAT_SETUPFILEXFER/MSG_GET */
469 TW_UINT16 TWAIN_SetupFileXferGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
470 TW_MEMREF pData)
472 FIXME ("stub!\n");
474 return TWRC_FAILURE;
477 /* DG_CONTROL/DAT_SETUPXFER/MSG_GETDEFAULT */
478 TW_UINT16 TWAIN_SetupFileXferGetDefault (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
479 TW_MEMREF pData)
481 FIXME ("stub!\n");
483 return TWRC_FAILURE;
487 /* DG_CONTROL/DAT_SETUPFILEXFER/MSG_RESET */
488 TW_UINT16 TWAIN_SetupFileXferReset (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
489 TW_MEMREF pData)
491 FIXME ("stub!\n");
493 return TWRC_FAILURE;
496 /* DG_CONTROL/DAT_SETUPFILEXFER/MSG_SET */
497 TW_UINT16 TWAIN_SetupFileXferSet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
498 TW_MEMREF pData)
500 FIXME ("stub!\n");
502 return TWRC_FAILURE;
505 /* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_GET */
506 TW_UINT16 TWAIN_SetupFileXfer2Get (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
507 TW_MEMREF pData)
509 FIXME ("stub!\n");
511 return TWRC_FAILURE;
514 /* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_GETDEFAULT */
515 TW_UINT16 TWAIN_SetupFileXfer2GetDefault (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
516 TW_MEMREF pData)
518 FIXME ("stub!\n");
520 return TWRC_FAILURE;
523 /* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_RESET */
524 TW_UINT16 TWAIN_SetupFileXfer2Reset (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
525 TW_MEMREF pData)
527 FIXME ("stub!\n");
529 return TWRC_FAILURE;
532 /* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_SET */
533 TW_UINT16 TWAIN_SetupFileXfer2Set (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
534 TW_MEMREF pData)
536 FIXME ("stub!\n");
538 return TWRC_FAILURE;
541 /* DG_CONTROL/DAT_SETUPMEMXFER/MSG_GET */
542 TW_UINT16 TWAIN_SetupMemXferGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
543 TW_MEMREF pData)
545 FIXME ("stub!\n");
547 return TWRC_FAILURE;
550 /* DG_CONTROL/DAT_STATUS/MSG_GET */
551 TW_UINT16 TWAIN_GetDSStatus (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
552 TW_MEMREF pData)
554 TW_UINT16 twRC = TWRC_FAILURE;
555 pTW_STATUS pSourceStatus = (pTW_STATUS) pData;
556 activeDS *pSource = TWAIN_LookupSource (pDest);
558 TRACE ("DG_CONTROL/DAT_STATUS/MSG_GET\n");
560 if (!pSource)
562 twRC = TWRC_FAILURE;
563 DSM_twCC = TWCC_BADDEST;
564 pSourceStatus->ConditionCode = TWCC_BADDEST;
566 else
568 twRC = TWRC_SUCCESS;
569 pSourceStatus->ConditionCode = pSource->twCC;
570 /* Reset the condition code */
571 pSource->twCC = TWCC_SUCCESS;
574 return twRC;
577 /* DG_CONTROL/DAT_USERINTERFACE/MSG_DISABLEDS */
578 TW_UINT16 TWAIN_DisableDSUserInterface (pTW_IDENTITY pOrigin,
579 pTW_IDENTITY pDest, TW_MEMREF pData)
581 TW_UINT16 twRC = TWRC_SUCCESS;
582 activeDS *pSource = TWAIN_LookupSource (pDest);
584 TRACE ("DG_CONTROL/DAT_USERINTERFACE/MSG_DISABLEDS\n");
586 if (!pSource)
588 twRC = TWRC_FAILURE;
589 DSM_twCC = TWCC_BADDEST;
591 else if (pSource->currentState != 5)
593 twRC = TWRC_FAILURE;
594 pSource->twCC = TWCC_SEQERROR;
596 else
598 pSource->currentState = 4;
599 twRC = TWRC_SUCCESS;
600 pSource->twCC = TWCC_SUCCESS;
603 return twRC;
606 /* DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS */
607 TW_UINT16 TWAIN_EnableDSUserInterface (pTW_IDENTITY pOrigin,
608 pTW_IDENTITY pDest, TW_MEMREF pData)
610 TW_UINT16 twRC = TWRC_SUCCESS;
611 pTW_USERINTERFACE pUserInterface = (pTW_USERINTERFACE) pData;
612 activeDS *pSource = TWAIN_LookupSource (pDest);
614 TRACE ("DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS\n");
616 if (!pSource)
618 twRC = TWRC_FAILURE;
619 DSM_twCC = TWCC_BADDEST;
621 else if (pSource->currentState != 4)
623 twRC = TWRC_FAILURE;
624 pSource->twCC = TWCC_SEQERROR;
626 else
628 if (pUserInterface->ShowUI)
630 pSource->currentState = 5; /* Transitions to state 5 */
631 /* FIXME: we should replace xscanimage with our own device UI */
632 system ("xscanimage");
633 pSource->currentState = 6;
634 pSource->pendingEvent.TWMessage = MSG_XFERREADY;
636 else
638 /* no UI will be displayed, so source is ready to transfer data */
639 pSource->pendingEvent.TWMessage = MSG_XFERREADY;
640 pSource->currentState = 6; /* Transitions to state 6 directly */
643 pSource->hwndOwner = pUserInterface->hParent;
644 twRC = TWRC_SUCCESS;
645 pSource->twCC = TWCC_SUCCESS;
648 return twRC;
651 /* DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDSUIONLY */
652 TW_UINT16 TWAIN_EnableDSUIOnly (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
653 TW_MEMREF pData)
655 TW_UINT16 twRC = TWRC_SUCCESS;
656 activeDS *pSource = TWAIN_LookupSource (pDest);
658 TRACE("DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDSUIONLY\n");
660 if (!pSource)
662 twRC = TWRC_FAILURE;
663 DSM_twCC = TWCC_BADDEST;
665 else if (pSource->currentState != 4)
667 twRC = TWRC_FAILURE;
668 pSource->twCC = TWCC_SEQERROR;
670 else
672 /* FIXME: we should replace xscanimage with our own UI */
673 system ("xscanimage");
674 pSource->currentState = 5;
675 twRC = TWRC_SUCCESS;
676 pSource->twCC = TWCC_SUCCESS;
679 return twRC;
682 /* DG_CONTROL/DAT_XFERGROUP/MSG_GET */
683 TW_UINT16 TWAIN_XferGroupGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
684 TW_MEMREF pData)
686 FIXME ("stub!\n");
688 return TWRC_FAILURE;
691 /* DG_CONTROL/DAT_XFERGROUP/MSG_SET */
692 TW_UINT16 TWAIN_XferGroupSet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
693 TW_MEMREF pData)
695 FIXME ("stub!\n");
697 return TWRC_FAILURE;