I want to call NetShareEnum, a function from netapi32.dll
NetShareEnum has this definition:
NET_API_STATUS NetShareEnum(
__in LPWSTR servername,
__in DWORD level,
__out LPBYTE *bufptr,
__in DWORD prefmaxlen,
__out LPDWORD entriesread,
__out LPDWORD totalentries,
__inout LPDWORD resume_handle
);
I wrote this code in python 2.5:
from ctypes import *
cname=c_wchar_p('a-computer-name')
level=c_int(1)
bufptr=create_string_buffer('\00', 10000)
prefmaxlen=c_int(9999)
entriesread=c_long(0)
totalentries=c_long(0)
resume=c_long(0)
netapi32=cdll.LoadLibrary('netapi32.dll')
netapi32.NetShareEnum(cname, level, byref(bufptr), prefmaxlen,
byref(entriesread), byref(totalentries), byref(resume))
but I get this error:
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
s.NetShareEnum(name, level, byref(bufptr), prefmaxlen,
entriesread, totalentries, resume)
ValueError: Procedure called with not enough arguments (28 bytes
missing) or wrong calling convention
entriesread and totalentries has valid values after call but bufptr is
not.
I pass bufptr to function instead of byref(bufptr) but the error was
same. 4 2979
On Aug 28, 12:01*am, taghi <eghli...@gmail.comwrote:
I want to call NetShareEnum, a function from netapi32.dll
NetShareEnum has this definition:
NET_API_STATUS NetShareEnum(
* __in * * LPWSTR servername,
* __in * * DWORD level,
* __out * *LPBYTE *bufptr,
* __in * * DWORD prefmaxlen,
* __out * *LPDWORD entriesread,
* __out * *LPDWORD totalentries,
* __inout *LPDWORD resume_handle
);
I wrote this code in python 2.5:
from ctypes import *
cname=c_wchar_p('a-computer-name')
level=c_int(1)
bufptr=create_string_buffer('\00', 10000)
prefmaxlen=c_int(9999)
entriesread=c_long(0)
totalentries=c_long(0)
resume=c_long(0)
netapi32=cdll.LoadLibrary('netapi32.dll')
netapi32.NetShareEnum(cname, level, byref(bufptr), prefmaxlen,
byref(entriesread), byref(totalentries), byref(resume))
but I get this error:
Traceback (most recent call last):
* File "<pyshell#12>", line 1, in <module>
* * s.NetShareEnum(name, level, byref(bufptr), prefmaxlen,
entriesread, totalentries, resume)
ValueError: Procedure called with not enough arguments (28 bytes
missing) or wrong calling convention
entriesread and totalentries has valid values after call but bufptr is
not.
I pass bufptr to function instead of byref(bufptr) but the error was
same.
Taghi,
I just learned how to do this myself. I tested this revision on WinXP
Python 2.5.
from ctypes import *
netapi32= cdll.LoadLibrary( 'netapi32.dll' )
cname=c_wchar_p('[mycompname]')
level=c_int(1)
#bufptr=create_string_buffer('\00', 10000)
bufptr=c_void_p(0)
prefmaxlen=c_int(9999)
entriesread=c_long(0)
totalentries=c_long(0)
resume=c_long(0)
prototype= WINFUNCTYPE( c_int,
c_wchar_p,
c_int,
POINTER( c_void_p ),
c_int,
POINTER( c_long ),
POINTER( c_long ),
POINTER( c_long )
)
NetShareEnum= prototype( ( "NetShareEnum", netapi32 ) )
result= NetShareEnum(cname,
level,
pointer(bufptr),
prefmaxlen,
byref(entriesread),
byref(totalentries),
byref(resume)
)
print result
print cname, level, bufptr, prefmaxlen, entriesread, totalentries,
resume
The 'bufptr' parameter receives a pointer to a buffer on return, which
you then have to free using NetApiBufferFree. Here is my output:
0
c_wchar_p(u'[mycompname]') c_long(1) c_void_p(2382504) c_long(9999)
c_long(2) c_l
ong(2) c_long(0)
'bufptr' now points to an array of SHARE_INFO_1 structures, which you
will have to define too. It copied 2/2 entries, or 'entriesread' /
'totalentries'. Return 0 indicates success.
taghi wrote:
I wrote this code in python 2.5:
from ctypes import *
.... snip ...
netapi32=cdll.LoadLibrary('netapi32.dll')
This is your problem: netapi32 is a windows
DLL and needs to be attached as such:
netapi32 = windll.LoadLibrary ("netapi32.dll")
or, more simply:
netapi32 = windll.net32api
But see my other post re this function in pywin32
TJG
taghi wrote:
I wrote this code in python 2.5:
from ctypes import *
.... snip ...
netapi32=cdll.LoadLibrary('netapi32.dll')
This is your problem: netapi32 is a windows
DLL and needs to be attached as such:
netapi32 = windll.LoadLibrary ("netapi32.dll")
or, more simply:
netapi32 = windll.netapi32
But see my other post re this function in pywin32
TJG
En Thu, 28 Aug 2008 02:01:23 -0300, taghi <eg******@gmail.comescribi�:
I want to call NetShareEnum, a function from netapi32.dll
NetShareEnum has this definition:
[...]
netapi32=cdll.LoadLibrary('netapi32.dll')
netapi32.NetShareEnum(cname, level, byref(bufptr), prefmaxlen,
byref(entriesread), byref(totalentries), byref(resume))
but I get this error:
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
s.NetShareEnum(name, level, byref(bufptr), prefmaxlen,
entriesread, totalentries, resume)
ValueError: Procedure called with not enough arguments (28 bytes
missing) or wrong calling convention
Try with netapi32=windll.netapi32 instead
--
Gabriel Genellina This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Georgy Pruss |
last post by:
Hi all,
How can I call a function which is in a Windows DLL? For example,
import win32api
lib_hnd = win32api.LoadLibrary( "user32.dll" )
if...
|
by: Frank Borell |
last post by:
I'm having a problem retrieving the ShortName from a file that was
written by a MAC and only from a Windows 2003 server.
I realize the file has a...
|
by: siddharth_jain_1 |
last post by:
Hello
I am using NetShareEnum to enumerate all the shared folders of a
server.
If there is password set on the server, I get system error code 5...
|
by: Siddharth Jain |
last post by:
hello
I am trying to enumerate the shared folders on a server using the
NetShareEnum function.
Now, when the server has a password set to access...
|
by: Siddharth Jain |
last post by:
hello
I am trying to enumerate the shared folders on a server using the
NetShareEnum function.
Now, when the server has a password set to access...
|
by: Siddharth Jain |
last post by:
hello
I am trying to enumerate the shared folders on a server using the
NetShareEnum function.
Now, when the server has a password set to access...
|
by: Gerald Klix |
last post by:
I read the whol email thread carefully and could not find any sentence by
Guido, which states that he does not accept ctypes for the standard...
|
by: moreati |
last post by:
Recently I discovered the re module doesn't support POSIX character
classes:
Python 2.5.2 (r252:60911, Apr 21 2008, 11:12:42)
on linux2
Type...
|
by: taghi |
last post by:
I want to call NetShareEnum, a function from netapi32.dll
NetShareEnum has this definition:
NET_API_STATUS NetShareEnum(
__in LPWSTR...
|
by: tammygombez |
last post by:
Hey fellow JavaFX developers,
I'm currently working on a project that involves using a ComboBox in JavaFX, and I've run into a bit of an issue....
|
by: tammygombez |
last post by:
Hey everyone!
I've been researching gaming laptops lately, and I must say, they can get pretty expensive. However, I've come across some great...
|
by: better678 |
last post by:
Question:
Discuss your understanding of the Java platform. Is the statement "Java is interpreted" correct?
Answer:
Java is an object-oriented...
|
by: teenabhardwaj |
last post by:
How would one discover a valid source for learning news, comfort, and help for engineering designs? Covering through piles of books takes a lot of...
|
by: CD Tom |
last post by:
This happens in runtime 2013 and 2016. When a report is run and then closed a toolbar shows up and the only way to get it to go away is to right...
|
by: Naresh1 |
last post by:
What is WebLogic Admin Training?
WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge...
|
by: jalbright99669 |
last post by:
Am having a bit of a time with URL Rewrite. I need to incorporate http to https redirect with a reverse proxy. I have the URL Rewrite rules made...
|
by: Matthew3360 |
last post by:
Hi, I have a python app that i want to be able to get variables from a php page on my webserver. My python app is on my computer. How would I make it...
|
by: AndyPSV |
last post by:
HOW CAN I CREATE AN AI with an .executable file that would suck all files in the folder and on my computerHOW CAN I CREATE AN AI with an .executable...
| |