小编the*_*lip的帖子

C# - 可以使用IOCTL

我正在尝试编写一个销售点系统,允许"现金抽屉"附件.手册中提供了打开现金抽屉的代码(使用IOCTL以C++编写).由于我在C#.NET中编码,是否可以在C#中执行类似的操作,或者我是否必须编写一些非托管代码?

我能从C#中获得"\\.\ ADVANSYS"的句柄吗?我需要使用DLLImport吗?

如果有人能指出我正确的方向,我将不胜感激.

// IOCTL Codes
#define GPD_TYPE 56053
#define ADV_OPEN_CTL_CODE CTL_CODE(GPD_TYPE, 0x920, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define ADV_STATUS_CTL_CODE CTL_CODE(GPD_TYPE, 0x900, METHOD_BUFFERED, FILE_ANY_ACCESS)
void OpenDrawer(UCHAR uWhichDrawer) // uWhichDrawer = 1 => CD#1, uWhichDrawer = 2 => CD#2
{
    HANDLE hFile;
    BOOL bRet
    UCHAR uDrawer = uWhichDrawer;

    // Open the driver
    hFile = CreateFile(TEXT("\\\\.\\ADVSYS"),
    GENERIC_WRITE | GENERIC_READ,
    FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

    if (m_hFile == INVALID_HANDLE_VALUE)
    {
        AfxMessageBox("Unable to open Cash Drawer Device Driver!");
        return;
    }

    // Turn on the …
Run Code Online (Sandbox Code Playgroud)

c# ioctl handle dllimport kernel32

2
推荐指数
1
解决办法
6468
查看次数

标签 统计

c# ×1

dllimport ×1

handle ×1

ioctl ×1

kernel32 ×1