square
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2004-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1445回复:6

98下注册了一个deveice不能用 为什么??

楼主#
更多 发布于:2001-12-10 17:21
注册device的程序如下
#define LINKNAME_STRING     L\"\\\\DosDevices\\\\IM\"
#define NTDEVICE_STRING     L\"\\\\Device\\\\IM\"
NDIS_STATUS
PtRegisterDevice(
VOID
)
/*++

Routine Description:

Register an ioctl interface - a device object to be used for this
purpose is created by NDIS when we call NdisMRegisterDevice.

This routine is called whenever a new miniport instance is
initialized. However, we only create one global device object,
when the first miniport instance is initialized. This routine
handles potential race conditions with PtDeregisterDevice via
the ControlDeviceState and MiniportCount variables.

NOTE: do not call this from DriverEntry; it will prevent the driver
from being unloaded (e.g. on uninstall).

Arguments:

None

Return Value:

NDIS_STATUS_SUCCESS if we successfully register a device object.

--*/
{
NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
UNICODE_STRING DeviceName;
UNICODE_STRING DeviceLinkUnicodeString;
PDRIVER_DISPATCH DispatchTable[IRP_MJ_MAXIMUM_FUNCTION];
UINT i;

DBGPRINT((\"==>PtRegisterDevice\\n\"));

NdisAcquireSpinLock(&GlobalLock);

++MiniportCount;

if (1 == MiniportCount)
    {
ASSERT(ControlDeviceState != PS_DEVICE_STATE_CREATING);

//
// Another thread could be running PtDeregisterDevice on
// behalf of another miniport instance. If so, wait for
// it to exit.
//
while (ControlDeviceState != PS_DEVICE_STATE_READY)
{
NdisReleaseSpinLock(&GlobalLock);
NdisMSleep(10);
NdisAcquireSpinLock(&GlobalLock);
}

ControlDeviceState = PS_DEVICE_STATE_CREATING;

NdisReleaseSpinLock(&GlobalLock);

for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++)
{
   DispatchTable = PtDispatch;
}

NdisInitUnicodeString(&DeviceName, NTDEVICE_STRING);
NdisInitUnicodeString(&DeviceLinkUnicodeString, LINKNAME_STRING);

//
// Create a device object and register our dispatch handlers
//

Status = NdisMRegisterDevice(
                    NdisWrapperHandle,
                    &DeviceName,
                    &DeviceLinkUnicodeString,
                    &DispatchTable[0],
                    &ControlDeviceObject,
                    &NdisDeviceHandle
                    );

NdisAcquireSpinLock(&GlobalLock);

ControlDeviceState = PS_DEVICE_STATE_READY;
}

NdisReleaseSpinLock(&GlobalLock);

DBGPRINT((\"<==PtRegisterDevice: %x\\n\", Status));

return (Status);
}
调用完成status返回0成功注册。

用    lpAdapter->hFile=CreateFile(lpAdapter->SymbolicLink,
                         GENERIC_WRITE | GENERIC_READ,
                         FILE_SHARE_READ,
                         NULL,
                         OPEN_EXISTING,
                         FILE_FLAG_OVERLAPPED,
                         NULL
                         );
调用 lpAdapter->SybolicLink=\"\\\\\\\\.\\\\IM\"
返回INVALID_HANDLE_VALUE 错误代码为2  (文件没找到)

createfile在2000 nt下都是运行正常的。。

实在搞的头疼死了 。。。 没法调下去了。。。

谁能帮帮忙

最新喜欢:

wingmanwingma...
m_lam12
驱动牛犊
驱动牛犊
  • 注册日期2001-07-19
  • 最后登录2002-11-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-12-10 18:56
你用工具看看,
你打算用这个干啥?
李安明
square
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2004-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-12-10 21:07
用跟踪工具rterm98出来的信息就是  注册成功 打不开

还有什么工具可以看?softice还没用过。
m_lam12
驱动牛犊
驱动牛犊
  • 注册日期2001-07-19
  • 最后登录2002-11-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-12-11 09:57
你用他赶啥?
李安明
banana
驱动牛犊
驱动牛犊
  • 注册日期2001-07-28
  • 最后登录2001-12-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-12-12 15:01
用 CreateFile(pDeviceFileName,
0,
0,
          NULL,
OPEN_EXISTING,
0,
NULL );试试
趁着这奈何天,伤怀日,寂寥时,试谴愚衷!
square
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2004-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-12-12 22:29
总算找出来错误了
传进去的设备名竟然是\"\\\\\\\\.\\\\IM\\\\\"

奇怪的是这个设备名在nt,2000下都可以打开

我就没去查这个设备名
最后实在没办法打印出来吓了一大跳
tangsc
驱动牛犊
驱动牛犊
  • 注册日期2003-03-02
  • 最后登录2009-09-14
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望6点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-15 17:35
你是怎么看到传进取的文件名的,
我现在遇到与你一样的问题.
你快来帮我啊
游客

返回顶部