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

S

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...
 
S

smallpond

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,053
Latest member
BrodieSola

Latest Threads

Top