1

こんにちはすべて私はWindowsのwinscard.dllにアクセスするためのPythonスクリプトを書いています。

lib = cdll.LoadLibrary('winscard.dll')
hSC = c_long(0)
lRetval = lib.SCardEstablishContext(0,None,None,pointer(hSC))

上記は以下のような値エラーを返します

Traceback (most recent call last):
  File "C:\Documents and Settings\sbritto\Desktop\OpenSSL\python\test.py", 
  line 17, in <module>
    lRetval = lib.SCardEstablishContext(0,None,None,pointer(hSC))
ValueError: Procedure called with not enough arguments (16 bytes missing) or 
wrong calling convention

この場合の値エラーは、引数が間違っていることを示します。しかし、それを機能させるために入力として他に何を与えるべきかわからないので、いくつかの入力の組み合わせを試しました。

皆さん、ありがとうございました。

4

1 に答える 1

0

DLL に対して間違った呼び出し規約を使用しています:

lib = ctypes.WinDLL("winscard")
handle = ctypes.c_voidp()
lib.SCardEstablishConnection(0, None, None, ctypes.pointer(handle))
# returns 0, all is good
handle
# c_void_p(some address), handle got created

PSSmart Cardサービスが開始されていることを確認してください。そうしないと、不可解なエラー コードが返されます。

于 2013-03-18T14:00:14.377 に答える