win32api::file translation of c-code to perl: help pls

win32api::file translation of c-code to perl: help pls

am 21.04.2008 15:20:19 von Susanne West

i have the following c-code that sould send out a
command through deviceIO using win32api::file, and
i'm struggling with the proper handling of the code.
the result of my DeviceIoControl() command is always
NULL...

#! perl
# -------------------------------
# c-code:
# define BUFF_SIZE 0x2c
# HANDLE hHandle = CreateFileA("\\\\.\\APPDRV",
# GENERIC_READ|GENERIC_WRITE, 0,
# NULL, OPEN_EXISTING, 0x80, NULL);
#
# char buffer[BUFF_SIZE];
# memset(buffer, 0, BUFF_SIZE);
# buffer[0] = 0x04;
# buffer[1] = 0x00;
# buffer[2] = 0x06;
# buffer[3] = 0x00;
# buffer[4] = 7;
# buffer[5] = 7;
#
# DWORD bytesReturned;
# BOOL result = DeviceIoControl(hHandle, 0x23209C,
# buffer, BUFF_SIZE, buffer, BUFF_SIZE, &bytesReturned, NULL);
#-------------------------------
#
#for testing, this should translate into the following:

$hDevice = createFile("\\\\.\\APPDRV", "rw", '' );
if (! $hDevice){ die("Could not open device! \n"); }
print "Device open\n"; #this seems to be working

$buffer = chr(04) . chr(0) . chr(06) . chr(0) .
7 . 7 . chr(0) . chr(0) .
chr(0) . chr(0) . chr(0) . chr(0) .
chr(0) . chr(0) . chr(0) . chr(0) .
chr(0) . chr(0) . chr(0) . chr(0) .
chr(0) . chr(0) . chr(0) . chr(0) .
chr(0) . chr(0) . chr(0) . chr(0) .
chr(0) . chr(0) . chr(0) . chr(0) .
chr(0) . chr(0) . chr(0) . chr(0) .
chr(0) . chr(0) . chr(0) . chr(0);

$res = DeviceIoControl( $hDevice, 0x23209C, $buffer, 44, $opOutBuf, 44,
$olRetBytes, $pOverlapped );
if (! $res){ print "IO control failed\n"; } # this fails


am i missing something here?

thanks for any hints...

Re: win32api::file translation of c-code to perl: help pls

am 21.04.2008 18:56:29 von smallpond

On Apr 21, 9:20 am, Susanne West wrote:
> i have the following c-code that sould send out a
> command through deviceIO using win32api::file, and
> i'm struggling with the proper handling of the code.
> the result of my DeviceIoControl() command is always
> NULL...
>
> #! perl

#!/usr/bin/perl
use warnings;
use strict;

> am i missing something here?
>

Yes. You are missing the error messages for your
undefined functions.
--S