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

The Perl language in general

Susanne
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...                                            
smallpond
#!/usr/bin/perl
use warnings;
use strict;


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